我对 smalltalk 还很陌生,一个看似简单的问题让我抓狂。我自己的类继承自 Morphic 类并覆盖 keyStroke
keyStroke: anEvent
Transcript show: myDigitClass.
(((anEvent keyValue) > 47) and: ((anEvent keyValue) < 58)) ifTrue: [
"myDigitClass dropADigit"
"myDigitClass setADigit: (anEvent keyValue) asCharacter."
Transcript show: (anEvent keyValue) asCharacter
]
到目前为止有效,转录显示我在键盘上输入的内容,但实例变量 myDigitClass 为 NIL,即使我初始化了这个变量并通过一个 setter 方法将它传递给这个类。如果通过我写的 getter 方法访问 myDigitClass 就可以了。
我调用 showPane 方法并将输入参数 digitMD 分配给实例 Var。
showPane: digitMD
|pane|
myDigitClass := digitMD.
pane := DigitMorph new.
pane extent: 340@340.
^pane openInWorld.
在工作区中,我执行以下操作:
myDigitClass := DigitClass new.
myTest := DigitMorph new.
myTest showPane: myDigitClass.