The Real routine

Combined from primary sources listed below.

In class Complex ( Type/Complex )§

See primary docmentation in context for method Real.

method Real§

multi method Real(Complex:D: --> Num:D)
multi method Real(Complex:U: --> Num:D)

Coerces the invocant to Num. If the imaginary part isn't approximately zero, coercion fails with X::Numeric::Real.

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

In class NumStr ( Type/NumStr )§

See primary docmentation in context for method Real.

method Real§

multi method Real(NumStr:D: --> Num:D)
multi method Real(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.

In role Enumeration ( Type/Enumeration )§

See primary docmentation in context for method Real.

method Real§

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

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

enum Numbers ( cool => '42', almost-pi => '3.14', sqrt-n-one => 'i' );
say cool.Real;           # OUTPUT: «42␤»
say almost-pi.Real;      # OUTPUT: «3.14␤»
try say sqrt-n-one.Real;
say $!.message if $!;    # OUTPUT: «Cannot convert 0+1i to Real: imaginary part not zero␤»

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

In class Cool ( Type/Cool )§

See primary docmentation in context for method Real.

method Real§

multi method Real()

Coerces the invocant to a Numeric and calls its .Real method. Fails if the coercion to a Numeric cannot be done.

say 1+0i.Real;            # OUTPUT: «1␤»
say 2e1.Real;             # OUTPUT: «20␤»
say 1.3.Real;             # OUTPUT: «1.3␤»
say (-4/3).Real;          # OUTPUT: «-1.333333␤»
say "foo".Real.^name;     # OUTPUT: «Failure␤»

In class Date ( Type/Date )§

See primary docmentation in context for method Real.

method Real§

multi method Real(Date:D: --> Int:D)

Converts the invocant to Int. The same value can be obtained with the daycount method.

Available as of release 2023.02 of the Rakudo compiler.

In class DateTime ( Type/DateTime )§

See primary docmentation in context for method Real.

method Real§

multi method Real(DateTime:D: --> Instant:D)

Converts the invocant to Instant. The same value can be obtained with the Instant method.

Available as of release 2023.02 of the Rakudo compiler.

In class RatStr ( Type/RatStr )§

See primary docmentation in context for method Real.

method Real§

multi method Real(Real:D: --> Rat:D)
multi method Real(Real: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.

In class IntStr ( Type/IntStr )§

See primary docmentation in context for method Real.

method Real§

multi method Real(IntStr:D: --> Int:D)
multi method Real(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.

In class ComplexStr ( Type/ComplexStr )§

See primary docmentation in context for method Real.

method Real§

multi method Real(ComplexStr:D: --> Num:D)
multi method Real(ComplexStr:U: --> Num:D)

Coerces the numeric portion of the invocant to Num. If the imaginary part isn't approximately zero, coercion fails with X::Numeric::Real.

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

In role Real ( Type/Real )§

See primary docmentation in context for method Real.

method Real§

multi method Real(Real:D: --> Real:D)
multi method Real(Real:U: --> Real: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.