2
它看起来并不像Pony language做出了许多大举堆栈溢出,但你的宝贝,开始的地方......小马构造函数是如何工作的?
Here's约小马构造非常有限的信息,这是不是帮助我了解什么我正在看。
这里有一个初步方案:
class Wombat
let name: String
var _hunger_level: U64
new anon() =>
name = "Anon"
_hunger_level = 0
new create(name': String) =>
name = name'
_hunger_level = 0
new hungry(name': String, hunger': U64) =>
name = name'
_hunger_level = hunger'
actor Main
new create(env: Env) =>
env.out.print("Started.")
let wombat: Wombat = Wombat("Ernie")
let w: Wombat = createWombat()
env.out.print("Name: "+wombat.name)
env.out.print("Name: "+w.name)
fun createWombat(): Wombat =>
let w: Wombat = Wombat("Bert")
w
让我们重命名 “创造” 的构造,以 “命名”:
new named(name': String) =>
name = name'
_hunger_level = 0
...我看到错误:
Error:
/src/main/main.pony:22:26: couldn't find 'create' in 'Wombat'
let wombat: Wombat = Wombat("Ernie")
......这表明所有的构造函数都不是平等的。咦......?
所以,让我们撤销这一改变。
现在让我们尝试使用零参数的构造函数:
let wombat: Wombat = Wombat()
let w: Wombat = createWombat()
...现在我明白了:
Error:
/src/main/main.pony:22:33: not enough arguments
let wombat: Wombat = Wombat()
^
它忽略了构造函数。
那么,让我们重命名前两个构造函数:
new create() =>
name = "Anon"
_hunger_level = 0
new named(name': String) =>
name = name'
_hunger_level = 0
...现在我明白了:
Error:
/src/main/main.pony:22:26: couldn't find 'apply' in 'Wombat'
let wombat: Wombat = Wombat()
不知道这意味着什么。