首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pony中的延迟初始化

Pony中的延迟初始化
EN

Stack Overflow用户
提问于 2018-10-16 12:02:03
回答 1查看 42关注 0票数 2

这是我想要做的

代码语言:javascript
复制
# Ruby
class Foo
  def bar
    @bar ||= []
  end
end

下面是我要开始的内容:

代码语言:javascript
复制
 // Pony pseudocode
 class Foo
   var _bar: Optional(Array(I32))
   fun ref bar(): Array(I32) ref =>
     if _bar == None then
       _bar = Some([])
     end
     _bar.unbox()
EN

回答 1

Stack Overflow用户

发布于 2018-10-21 15:25:18

Pony没有内置选项类型。相反,您可以使用None替代方法编写一个sum类型的(…. | None)。可以使用模式匹配来恢复备选方案,基于它们的类型:

代码语言:javascript
复制
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在类型参数周围使用[…],而不是圆括号。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52827794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档