# routine Numeric

Documentation for routine `Numeric`

assembled from the following types:

# 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`

.

# 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 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 StrDistance

From StrDistance

## (StrDistance) method Numeric

Returns the distance as a number.

# 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`

.

# 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 Thread

From Thread

## (Thread) method Numeric

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

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

# 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.

# 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 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»

# role Sequence

From Sequence

## (Sequence) method Numeric

method Numeric(::?CLASS:D:)

Returns the number of elements in the cached sequence.

# 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»

# 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`

.

# 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 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 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 X::AdHoc

From X::AdHoc

## (X::AdHoc) method Numeric

Defined as

method Numeric()

Converts the payload to `Numeric`

and returns it