这就是我想要做的
# Ruby
class Foo
def bar
@bar ||= []
end
end
这就是我要开始的:
// Pony pseudocode
class Foo
var _bar: Optional(Array(I32))
fun ref bar(): Array(I32) ref =>
if _bar == None then
_bar = Some([])
end
_bar.unbox()
答案 0 :(得分:3)
Pony没有内置的选项类型。相反,您可以编写总和类型(…. | None)
,并用None
替代。模式匹配可用于根据其类型恢复备选方案:
class Foo
var _bar: (Array[I32] ref | None) = None
fun ref bar(): Array[I32] ref =>
match _bar
| let bar': Array[I32] => bar'
| None =>
let bar'' = Array[I32]
_bar = bar''
bar''
end
请注意,Pony在类型参数而不是括号周围使用[…]
。