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()
不知道這意味着什麼。