routine Numeric

Documentation for routine Numeric assembled from the following types:

class Str

From Str

(Str) method Numeric

Defined as:

method Numeric(Str:D: --> Numeric:D)

Coerces the string to Numeric using semantics equivalent to val routine. Fails with X::Str::Numeric if the coercion to a number cannot be done.

Only Unicode characters with property Nd, as well as leading and trailing whitespace are allowed, with the special case of the empty string being coerced to 0. Synthetic codepoints (e.g. "7\x[308]") are forbidden.

While Nl and No characters can be used as numeric literals in the language, their conversion via Str.Numeric will fail, by design; the same will happen with synthetic numerics (composed of numbers and diacritic marks). See unival if you need to coerce such characters to Numeric. +, - and the Unicode MINUS SIGN − are all allowed.

" −33".Numeric;       # OUTPUT: «-33␤» 

class X::AdHoc

From X::AdHoc

(X::AdHoc) method Numeric

Defined as

method Numeric()

Converts the payload to Numeric and returns it

class Map

From Map

(Map) method Numeric

Defined as:

method Numeric(Map:D: --> Int:D)

Returns the number of pairs stored in the Map (same as .elems).

my $m = Map.new('a' => 2'b' => 17);
say $m.Numeric;                                   # OUTPUT: «2␤»

class StrDistance

From StrDistance

(StrDistance) method Numeric

Returns the distance as a number.

class IO::Path

From IO::Path

(IO::Path) method Numeric

Defined as:

method Numeric(IO::Path:D: --> Numeric:D)

Coerces .basename to Numeric. Fails with X::Str::Numeric if base name is not numerical.

class List

From List

(List) method Numeric

Defined as:

method Numeric(List:D: --> Int:D)

Returns the number of elements in the list (same as .elems).

say (1,2,3,4,5).Numeric# OUTPUT: «5␤»

class ComplexStr

From ComplexStr

(ComplexStr) method Numeric

Defined as:

multi method Numeric(ComplexStr:D: --> Complex:D)
multi method Numeric(ComplexStr:U: --> Complex:D)

The :D variant returns the numeric portion of the invocant. The :U variant issues a warning about using an uninitialized value in numeric context and then returns value <0+0i>.

role Enumeration

From Enumeration

(Enumeration) method Numeric

Defined as:

multi method Numeric(::?CLASS:D:)

Takes a value of an enum and returns it after coercion to Numeric:

enum Numbers ( cool => '42'almost-pi => '3.14'sqrt-n-one => 'i' );
say cool.Numeric;       # OUTPUT: «42␤» 
say almost-pi.Numeric;  # OUTPUT: «3.14␤» 
say sqrt-n-one.Numeric# OUTPUT: «0+1i␤»

Note that if the value cannot be coerced to Numeric, an exception will be thrown.

class Capture

From Capture

(Capture) method Numeric

Defined as:

method Numeric(Capture:D: --> Int:D)

Returns the number of positional elements in the Capture.

say \(1,2,3apples => 2).Numeric# OUTPUT: «3␤»

class Thread

From Thread

(Thread) method Numeric

method Numeric(Thread:D: --> Int:D)

Returns a numeric, unique thread identifier, i.e. the same as id.

class IntStr

From IntStr

(IntStr) method Numeric

Defined as:

multi method Numeric(IntStr:D: --> Int:D)
multi method Numeric(IntStr:U: --> Int:D)

The :D variant returns the numeric portion of the invocant. The :U variant issues a warning about using an uninitialized value in numeric context and then returns value 0.

enum Bool

From Bool

(Bool) routine Numeric

multi method Numeric(Bool:D --> Int:D)

Returns the value part of the enum pair.

say False.Numeric;                                # OUTPUT: «0␤» 
say True.Numeric;                                 # OUTPUT: «1␤»

class Nil

From Nil

(Nil) method Numeric

method Numeric()

Warns the user that they tried to numify a Nil.

class Numeric

From Numeric

(Numeric) method Numeric

Defined as:

multi method Numeric(Numeric:D: --> Numeric:D)
multi method Numeric(Numeric:U: --> Numeric:D)

The :D variant simply returns the invocant. The :U variant issues a warning about using an uninitialized value in numeric context and then returns self.new.

enum Endian

From Endian

(Endian) routine Numeric

multi method Numeric(Endian:D --> Int:D)

Returns the value part of the enum pair.

say NativeEndian.Numeric;    # OUTPUT: «0␤» 
say LittleEndian.Numeric;    # OUTPUT: «1␤» 
say BigEndian.Numeric;       # OUTPUT: «2␤»

Note that the actual numeric values are subject to change. So please use the named values instead.

class RatStr

From RatStr

(RatStr) method Numeric

Defined as:

multi method Numeric(RatStr:D: --> Rat:D)
multi method Numeric(RatStr:U: --> Rat:D)

The :D variant returns the numeric portion of the invocant. The :U variant issues a warning about using an uninitialized value in numeric context and then returns value 0.0.

role Sequence

From Sequence

(Sequence) method Numeric

method Numeric(::?CLASS:D:)

Returns the number of elements in the cached sequence.

class NumStr

From NumStr

(NumStr) method Numeric

Defined as:

multi method Numeric(NumStr:D: --> Num:D)
multi method Numeric(NumStr:U: --> Num:D)

The :D variant returns the numeric portion of the invocant. The :U variant issues a warning about using an uninitialized value in numeric context and then returns value 0e0.