如何从承诺中退出承诺? perl6文档不提供简单的方法。例如:
my $x = start {
loop { # loop forever until "quit" is seen
my $y = prompt("Say something: ");
if $y ~~ / quit / {
# I want to exit the promise from here;
# "break" and "this.break" are not defined;
# "return" does not break the promise;
# I do NOT want an error exception when exiting a promise;
# I want to return a value as the result of this promise;
}
else { say $y; }
}
}
我不想永远处于承诺循环中。无法识别break()
和this.break()
,return
不会违背承诺。
答案 0 :(得分:8)
使用last
keyword退出循环。
start
块的保留值是其最后一个语句返回的值。
所以:
my $x = start {
loop { # loop forever until "quit" is seen
my $y = prompt("Say something: ");
if $y ~~ / quit / {
last
}
else { say $y; }
}
42 # <-- The promise will be kept with value `42`
}