Как выйти из обещания из обещания?
Как выйти из обещания из обещания? Документы 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
не нарушает обещание.
1 ответ
Решение
Использовать 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`
}