昨日の続きです。
$a = !($_%3)?'Fizz':'';
0という数字を見てますと「0」という概念が存在してしまいますが、0というのは「ない」という概念みたいです。で、この式は「3で割った余りがないときFizzを返し、そうでないとき何もしない」と解されるべきなのでしょうか。
すごいのは「''」の概念でして、これもある意味0の概念かと思います。文字が存在しないのですから、数字がデリートされるのかと思いきや、そのまま存在してます。これは「何もしない」というある種の0概念の気がします。
数式的には
$a = ($_%3)?'':'Fizz';
の方が分かりやすい。「3で割った時の余りがあるときは何もしない。そうでないときはFizzを返す」
読み解くのは結構面白いです^^
他にあがっていた構文をいくつかあげます。
#!/usr/bin/perl
for my $a(1..100){
if ($a % 3 == 0 && $a % 5 == 0){
print "fizzbuzz\n";
}elsif($a % 3 == 0){
print "fizz\n";
}elsif($a % 5 == 0){
print "buzz\n";
}else{
print "$a\n";
}
}
for my $i (1..100) {
my $s = sprintf "%s%s", $i%3?"":"Fizz",$i%5?"":"Buzz";
printf "%s\n", $s?$s:$i;
}
他にもいくつかありましたが、初心者には難しすぎてこの辺から読み解くのがいいかもしれません。

0 件のコメント:
コメントを投稿