On Mon, Aug 31, 2020 at 05:05:53PM -0700, yary wrote:
: I like this better for alpha counter
:
: raku -e "for (1..4) { say (BEGIN $ = 'AAA')++ }"
:
: with BEGIN, the assignment of AAA happens once. With the earlier ||= it
: checks each time through the loop.
: -y
Careful with that, though, since BEGIN/INIT happen only once ever (and in the
context of the top-level run), so the state variable acts more like a global:
$ raku -e "for <a b> { for (1..2) { say (BEGIN $ = 'AAA')++ } }"
AAA
AAB
AAC
AAD
$ raku -e "for <a b> { for (1..2) { say (INIT $ = 'AAA')++ } }"
AAA
AAB
AAC
AAD
If you want to re-initialize a state variable, it's probably better to make
it explicit with the state declarator:
$ raku -e "for <a b> { for (1..2) { say (state $ = 'AAA')++ } }"
AAA
AAB
AAA
AAB
Larry