開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Perl 6 (プログラミング言語)
- Rakudo(コンパイラ、実装)
Cが出来るから。あとperlも出来る https://t.co/x7ekCzIMSu https://t.co/DsyCfEbFpm
— Dan Kogai (@dankogai) 2017年7月14日
え、C++の三項演算子って左辺値にも使えるの!!! pic.twitter.com/OPVqhJ1jCq
— masaka (@masaka_k) 2017年7月13日
Perl もできるなら、Perl 6でも可能なのか気になったから、同様のコードで試して見た。
コード(Emacs)
perl 6
#!/usr/bin/env perl6 # -*- coding: utf-8 -*- my $a = 1; my $b = 2; say "a = $a, b = $b"; ($a < $b ?? $a !! $b) = 0; say "a = $a, b = $b"; my $str = "foobar"; # substr($str, 3, 3) = 'dan'; # foodan # say $str; # せっかく Perl 6 なので Perl 5 とは他の書き方で試して見た $str.substr(3, 3) = 'dan'; say $str;
入出力結果(Terminal, REPL)
$ ./sample.pl a = 1, b = 2 a = 0, b = 2 Cannot modify an immutable Str in block <unit> at ./sample.pl line 15 $
ということで、Perl 6 でも三項演算子(注意「? :」 ではなく 「?? !!」)を左辺値にも使えるみたい。
文字列に関しては Perl 5 では mutable(可変性をもっている)なのが immutable(不変性をもつ)に変わったっぽい。サブルーチンの引数で 「is copy」とかあるみたいに、mutable か immutable かを重要視する傾向なのかな。(副作用を意識するような関数型プログラミングの影響だったり?)
0 コメント:
コメントを投稿