これはMoritz Lenz氏のWebサイトPerlgeek.deで公開されているブログ記事"Perl 5 to 6" Lesson 03 - Basic Control Structuresの日本語訳です。
原文はCreative Commons Attribution 3.0 Germanyに基づいて公開されています。
本エントリにはCreative Commons Attribution 3.0 Unportedを適用します。
Original text: Copyright© 2008-2010 Moritz Lenz
Japanese translation: Copyright© 2011 SATOH Koichi
NAME
"Perl 5 to 6" Lesson 03 - 基本制御構造
SYNOPSIS
if $percent > 100 {
say "weird mathematics";
}
for 1..3 {
# $_をループ変数として使う
say 2 * $_;
}
for 1..3 -> $x {
# 明示的なループ変数を使う
say 2 * $x;
}
while $stuff.is_wrong {
$stuff.try_to_make_right;
}
die "Access denied" unless $password eq "Secret";
DESCRIPTION
ほとんどのPerl5の制御構造はPerl 6でもよく似ています。
一番大きな見た目の変化はif
、while
、for
などの後にカッコが必要なくなったことです。
正確には、条件をカッコで囲むのは非推奨です。
分岐
if
はほとんど変わっていません。相変わらずelsif
やelse
の節を付けることができます。
unless
もありますが、else
節を付けることができなくなりました。
if $sheep == 0 {
say "How boring";
} elsif $sheep == 1 {
say "One lonely sheep";
} else {
say "A herd, how lovely!";
}
if
やunless
を文修飾子として(つまり文の後に付けて)使うこともできます:
say "you won" if $answer == 42;
ループ
Perl5と同様、next
とlast
でループを制御できます。
for
ループはリストを走査する場合のみに使われるようになりました。
ループ変数が与えられない場合はデフォルトで$_
が使われます。
for 1..10 -> $x {
say $x;
}
-> $x { ... }
という部分は「ポインティ・ブロック」と呼ばれ、無名サブルーチン、あるいはLispのlambdaのようなものです。
1つ以上のループ変数を使うこともできます:
for 0..5 -> $even, $odd {
say "Even: $even \t Odd: $odd";
}
これはハッシュを走査する方法でもあります:
my %h = a => 1, b => 2, c => 3;
for %h.kv -> $key, $value {
say "$key: $value";
}
Cスタイルのfor
ループはloop
という名前になりました(これはカッコを必要とする唯一のループ構造でもあります):
loop (my $x = 1; $x < 100; $x = $x**2) {
say $x;
}
コメント
コメントを投稿