2

这是我想做的

# 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()
4

1 回答 1

3

Pony 没有内置选项类型。相反,您可以编写 sum type (…. | 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 使用[…]类型参数,而不是括号。

于 2018-10-21T07:25:17.553 回答