Raku Books / Creating a Compiler in Raku / Arrays and Hashes
Assigning to an array item
OK, now we can create an array and it’s time to fill its elements with some data:
data[0] = 10;
data[1] = 20;The assignment rule can be updated similarly to how we did it with string indexing in the previous chapter with an optional integer index in square brackets:
rule assignment {
<variable-name> [ '[' <integer> ']' ]? '=' <value>
}In the corresponding action, the presence of the index indicates that we are working with an array, otherwise it is a scalar variable.
method assignment($/) {
if $<integer> {
%!var{~$<variable-name>}[+$<integer>] =
$<value>.made;
}
else {
%!var{~$<variable-name>} = $<value>.made;
}
}After you run the program with the above assignments, the data variable will keep two values in the storage:
Hash %!var = {:data($[10, 20])}