Perl 6のwith orwith with without
1385 ワード
with orwith without
with
文はif
のようですが、真偽ではなく定義されているかどうかをテストするためです.さらに、given
に似た条件をテーマにしています.with "abc".index("a") { .say } # print 0
elsif
の代わりに、orwith
は定義されているかどうかのテストをリンクするために使用されます.# The below code says "Found a at 0"
my $s = "abc";
with $s.index("a") { say "Found a at $_" }
orwith $s.index("b") { say "Found b at $_" }
orwith $s.index("c") { say "Found c at $_" }
else { say "Didn't find a, b or c" }
if
ベースの従文とwith
ベースの従文を混合することができます.# This says "Yes"
if 0 { say "No" } orwith Nil { say "No" } orwith 0 { say "Yes" };
unless
については、without
を使用して未定義(undefinedness)を検出できますが、else
従文を追加することはできません.my $answer = Any;
without $answer { warn "Got: $_" }
with
文とwithout
文の修飾子もあります.my $answer = (Any, True).roll;
say 42 with $answer;
warn "undefined answer" without $answer;
テスト:
> my $answer = (Any, True).roll;
True
> say 42 with $answer;
42
> my $answer = (Any, True).roll;
(Any)
> say 42 with $answer;
()