對於Squeak Smalltalk,我有點新手,所以我可能會做出錯誤的判斷或對Squeak的工作方式做出錯誤的假設。不過,我想知道我在哪裏出了錯...Squeak Smalltalk:初始化不適用於從Array派生的類?
我試圖讓類鼓風機派生自陣列。鼓風機基本上是一個數組,但有一個額外的實例變量叫做索引和一些方法。我認爲初始化方法會在我創建一個新對象時自動運行,並且它會初始化數組和索引變量,但這似乎不會發生。如果我稍後運行「手動」初始化,它會按預期工作。
Array variableSubclass: #Blower
instanceVariableNames: 'index'
(...)
Blower >> initialize
super initialize.
1 to: self size do: [ :ix | self at: ix put: ix ].
self shuffle.
index := 1.
如果我在工作區中的以下內容: blower := Blower new: 10. blower inspect.
檢查窗口顯示(不出我所料): \#(nil nil nil nil nil nil nil nil nil nil) index: nil
如果我手動運行初始化,檢查窗口是正確的:
blower initialize.
\#(6 4 1 10 2 8 3 ...)
index: nil
那麼爲什麼我在創建鼓風機時不初始化運行並設置它正確嗎? 無論如何要自動化,所以它發生在創作? IE瀏覽器。初始化工作?