In Variable§
See primary documentation in context for trait is dynamic
multi trait_mod:<is>(Variable:D, :$dynamic)
Marks a variable as dynamic, that is, accessible from inner dynamic scopes without being in an inner lexical scope.
sub introspect() { say $CALLER::x; } my $x is dynamic = 23; introspect; # OUTPUT: «23» { # not dynamic my $x; introspect() # dies with an exception of X::Caller::NotDynamic }
The is dynamic
trait is a rather cumbersome way of creating and accessing dynamic variables. A much easier way is to use the * twigil
:
sub introspect() { say $*x; } my $*x = 23; introspect; # OUTPUT: «23» { # not dynamic my $x; introspect() # dies with an exception of X::Dynamic::NotFound }