如何分配可能引发错误的方法的 return 值?

How to assign the return value of a method that can raise an error?

在 pony 中,如果 class 上有一个方法可以引发错误,我们使用 ? 运算符在 try...end 块中调用该方法。例如:

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

但是如果我想将 apply 方法的 return 值分配给像 item 这样的名称,然后打印 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'

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

所有的“语句”在Pony中都是表达式,所以你可以把赋值放在try块之外,比如

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

将需要 else,因为右值必须可用。