Documentation for method
raw assembled from the following types:
method raw(Parameter: --> Bool)
True for raw parameters.
sub f(, is raw, \c)f(17, "4711", 42); # OUTPUT: «False␤True␤True␤»
Raw parameters bind either a variable or a value passed to it, with no decontainerization taking place. That means that if a variable was passed to it, you can assign to the parameter. This is different from rw-parameter which can only bind to variables, never to values.
This is the normal behavior for parameters declared with a sigil of '
\', which is not really a sigil insofar as it is only used on the parameter.
sub f(\x)f(my ); # worksf(42); # diesCATCH ;# OUTPUT: «X::Assignment::RO: Cannot modify an immutable Int␤»
Other parameters may become raw through use of the '
is raw' trait. These still use their sigil in code.
sub f( is raw)
When used with slurpy list parameters, the
is raw trait will cause the list of arguments given to be packed into a
List instead of an
Array, which prevents them from being containerized with
Scalar. This is the default behavior when using
+ with a sigilless parameter:
my is List = Mu, Any;say -> * () =:= ; # OUTPUT: «False␤»say -> + () =:= ; # OUTPUT: «False␤»say -> +l () =:= ; # OUTPUT: «True␤»say -> * is raw () =:= ; # OUTPUT: «True␤»