routine Numeric
Documentation for routine Numeric
assembled from the following types:
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 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
.
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>
.
class X::AdHoc
From X::AdHoc
(X::AdHoc) method Numeric
Defined as
method Numeric()
Converts the payload to Numeric
and returns it
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 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 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
.
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 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
.
class Nil
From Nil
(Nil) method Numeric
method Numeric()
Warns the user that they tried to numify a Nil
.
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 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 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
.
role Sequence
From Sequence
(Sequence) method Numeric
method Numeric(::?CLASS:D:)
Returns the number of elements in the cached sequence.
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 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 StrDistance
From StrDistance
(StrDistance) method Numeric
Returns the distance as a number.
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,3, apples => 2).Numeric; # OUTPUT: «3»