ponylang:在另一个构造函数中调用构造函数方法?

时间:2016-12-07 13:02:39

标签: ponylang

ENV:ponylang 0.9.0

来自ponylang tutorial

class Wombat
  let name: String
  var _hunger_level: U64

  new create(name': String) =>
    name = name'
    _hunger_level = 0

  new hungry(name': String, hunger': U64) =>
    name = name'
    _hunger_level = hunger'

尝试了以下,编译器抱怨:constructor with undefined fields

  new create(name': String) =>
    hungry(name', 0)

从哪里获得确切的解释?

1 个答案:

答案 0 :(得分:1)

Pony中的构造函数调用将始终创建一个新对象,没有委托构造函数。

new create(name': String) =>
  hungry(name', 0)

在您的示例中,对hungry的调用不适用于create中正在初始化的对象,而是应用于已分配的新Wombat

在Pony伪代码中,这就是真正发生的事情。

new create(this: Wombat, name': String) =>
  let new_wombat = Wombat_Alloc()
  hungry(new_wombat, name', 0)