0
ENV:ponylang 0.9.0ponylang:在另一个构造函数中调用构造方法?
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)
哪里得到一个确切的解释?
正确的'create'构造函数的伪代码是怎么样的? “this”算作别名吗? “this”的确切类型是什么?鉴于“构造函数总是返回一个短暂类型,因为它是一个新对象。” – dobedo
在构造函数内部,'this'总是被视为'Type ref'。任何引用都是别名,而'this'是构造函数开头的唯一对象的别名。即使构造函数返回一个唯一类型(即'new iso create()'或'new trn create()'),这是安全的,因为这样的构造函数必须有可发送参数,这意味着'this'的'ref'别名' t构造函数的“外部泄漏”:不能将其存储在'val'或'tag'参数中,并且如果将其存储在'iso'参数中,则由于隔离而在对象外部不可见'iso'的边界。 –