如何从承诺中退出承诺? 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()无法识别,返回不会破坏承诺.
解决方法
使用
last
keyword退出循环.
保持的起始块值是其最后一个语句返回的值.
所以:
- 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`
- }