そろそろかなとrakudo(#29)を触ってみた感想。もう少し待とう・・・。とりあえず触った事を記録。
試したのは加算器関数。まず、イメージで実装してみる。
sub make_adder($n) { {$n += $^i} } my $adder30 = make_adder(30); $adder30.(1).say; # 31になる $adder30.(5).say; # 36になる $adder30.(11).say; # 47になる
ブロックがどうのというエラーで動かない。make_adder関数の戻り値ブロックの表記がだめらしい。しかたがないので表記を変えてみる。
sub make_adder($n) { -> $i {$n += $i} } my $adder30 = make_adder(30); $adder30.(1).say; # 31になる $adder30.(5).say; # 36になる $adder30.(11).say; # 47になる
今度は変数が読み取り専用だとエラーになった。Perl6仕様によると関数の引数に値を代入する場合は明示が必要らしい。
sub make_adder($n is rw) { -> $i {$n += $i} } my $adder30 = make_adder(30); $adder30.(1).say; # 31になる $adder30.(5).say; # 36になる $adder30.(11).say; # 47になる
読み書きを明示した。けど、読み取り専用と怒られる。なんでだろうか?しかたがないので、次に落ち着く。
sub make_adder { my ($n) = @_; -> $i {$n += $i} } my $adder30 = make_adder(30); $adder30.(1).say; # 31になる $adder30.(5).say; # 36になる $adder30.(11).say; # 47になる
ほとんどPerl5といっしょ。。