如何分配可能引发错误的方法的 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
,因为右值必须可用。
在 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
,因为右值必须可用。