lis*_*tor 8 break perl6 promise
如何从承诺中退出承诺?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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我不想永远处于承诺循环中.break()并且this.break()不被承认,并且return没有违背承诺.
使用last关键字退出循环.
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`
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |