Capture
ErrorsCollection

Capture

Synthesised documentation from type/Num type/Int type/ComplexStr type/Supply type/Range type/Blob type/Channel type/Callable type/RatStr type/Mu type/QuantHash type/Seq type/Failure type/Signature type/Map type/Capture type/Str type/Whatever type/List type/Version

From type/Num

See Original text in context

method Capture()

Throws X::Cannot::Capture.

From type/Int

See Original text in context

method Capture()

Throws X::Cannot::Capture.

From type/ComplexStr

See Original text in context

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

Equivalent to Mu.Capture.

From type/Supply

See Original text in context

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

Equivalent to calling .List.Capture on the invocant.

From type/Range

See Original text in context

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

Returns a Capture with values of .min .max, .excludes-min, .excludes-max, .infinite, and .is-int as named arguments.

From type/Blob

See Original text in context

method Capture(Blob:D:)

Converts the object to a List which is, in turn, coerced to a Capture.

From type/Channel

See Original text in context

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

Equivalent to calling .List.Capture on the invocant.

From type/Callable

See Original text in context

method Capture()

Throws X::Cannot::Capture.

From type/RatStr

See Original text in context

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

Equivalent to Mu.Capture.

From type/Mu

See Original text in context

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

Returns a Capture with named arguments corresponding to invocant's public attributes:

class Foo {
    has $.foo = 42;
    has $.bar = 70;
    method bar { 'something else' }
}.new.Capture.say# OUTPUT: «\(:bar("something else"), :foo(42))␤»

From type/QuantHash

See Original text in context

method Capture()

Returns the object as a Capture by previously coercing it to a Hash.

From type/Seq

See Original text in context

method Capture()

Coerces the object to a List, which is in turn coerced into a Capture

From type/Failure

See Original text in context

method Capture()

Throws X::Cannot::Capture if the invocant is a type object or a handled Failure. Otherwise, throws the invocant's exception.

From type/Signature

See Original text in context

method Capture()

Throws X::Cannot::Capture.

From type/Map

See Original text in context

method Capture(Map:D:)

Returns a Capture where each key, if any, has been converted to a named argument with the same value as it had in the original Map. The returned Capture will not contain any positional arguments.

my $map = Map.new('a' => 2'b' => 17);
my $capture = $map.Capture;
my-sub(|$capture);                                # OUTPUT: «2, 17» 
 
sub my-sub(:$a:$b{
    say "$a$b"
}

From type/Capture

See Original text in context

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

Returns itself, i.e. the invocant.

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

From type/Str

See Original text in context

method Capture()

Throws X::Cannot::Capture.

From type/Whatever

See Original text in context

method Capture()

Throws X::Cannot::Capture.

From type/List

See Original text in context

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

Returns a Capture where each Pair, if any, in the List has been converted to a named argument (with the key of the Pair stringified). All other elements in the List are converted to positional arguments in the order they are found, i.e. the first non pair item in the list becomes the first positional argument, which gets index 0, the second non pair item becomes the second positional argument, getting index 1 etc.

my $list = (75=> 2=> 17);
my $capture = $list.Capture;
say $capture.keys;                                # OUTPUT: «(0 1 a b)␤» 
my-sub(|$capture);                                # OUTPUT: «7, 5, 2, 17» 
 
sub my-sub($first$second:$a:$b{
    say "$first$second$a$b"
}

A more advanced example demonstrating the returned Capture being matched against a Signature.

my $list = (75=> 2=> 17);
say so $list.Capture ~~ :($ where * == 7,$,:$a,:$b); # OUTPUT: «True␤» 
 
$list = (85=> 2=> 17);
say so $list.Capture ~~ :($ where * == 7,$,:$a,:$b); # OUTPUT: «False␤»

From type/Version

See Original text in context

method Capture()

Throws X::Cannot::Capture.