1

在 pony 中,如果类上的方法可能引发错误,我们使用运算符在块?中调用该方法。try...end例如:

let my_third_list = List[String].from(["First"; "Second"; "Third"])
try env.out.print(list.apply(1)?) end // Second

但是如果我想将apply方法​​的返回值分配给一个名称item,然后打印项目怎么办

let my_third_list = List[String].from(["First"; "Second"; "Third"])
try let item = list.apply(1)? end // Second
env.out.print(item)

编译器说can't find declaration of 'item'

我怎么做?在这些情况下,最好的做事方式是什么?

4

1 回答 1

1

所有“语句”都是 Pony 中的表达式,因此您可以在try块之外放置一个赋值,例如

let item = try list.apply(1)? else "<notfound>" end
env.out.print(item)

else是必需的,因为右值必须可用。

于 2020-12-28T10:40:18.807 回答