class ComplexStr is Allomorph is Complex {}

ComplexStr is a dual value type, a subclass of both Allomorph, hence Str, and Complex.

See Allomorph for further details.

my $complex-str = <42+0i>;
say $complex-str.^name;             # OUTPUT: «ComplexStr␤»

my Complex $complex = $complex-str; # OK!
my Str     $str     = $complex-str; # OK!

# ∈ operator cares about object identity
say 42+0i  <42+0i  55  1>;         # OUTPUT: «False␤»

Methods§

method new§

method new(Complex $i, Str $s)

The constructor requires both the Complex and the Str value, when constructing one directly the values can be whatever is required:

my $f = ComplexStr.new(42+0i, "forty two (but complicated)");
say +$f; # OUTPUT: «42+0i␤»
say ~$f; # OUTPUT: «"forty two (but complicated)"␤»

method Capture§

method Capture(ComplexStr:D: --> Capture:D)

Equivalent to Mu.Capture.

method Complex§

method Complex

Returns the Complex value of the ComplexStr.

method Numeric§

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

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.

Operators§

infix ===§

multi infix:<===>(ComplexStr:D $a, ComplexStr:D $b)

ComplexStr Value identity operator. Returns True if the Complex values of $a and $b are identical and their Str values are also identical. Returns False otherwise.

Typegraph§

Type relations for ComplexStr
raku-type-graph ComplexStr ComplexStr Allomorph Allomorph ComplexStr->Allomorph Complex Complex ComplexStr->Complex Mu Mu Any Any Any->Mu Cool Cool Cool->Any Stringy Stringy Str Str Str->Cool Str->Stringy Allomorph->Str Numeric Numeric Complex->Cool Complex->Numeric

Expand chart above