我有一个制作汽车对象的课程。它有两个实例变量:Make和Color。我在工作区内调用此方法时遇到问题(如下所述)
类方法-Constructor
make: aMake color: aColor
"Creates a new car object, sets its instance variables by the arguments"
|car|
car := self new.
car setMake: aMake setColor: aColor. "accessor method below"
^car
访问者方法
setMake: make setColor: color
"sets the instance variables"
Make := make.
Color := color.
工作区(调用代码)
|car|
car := Car make: 'toyota' color: 'red'
我得到的消息未被理解'在调用此行时。这是什么问题?
答案 0 :(得分:7)
一切都很好看。可能的问题是你的“构造函数”(更有可能在Smalltalk中称为“实例创建消息”)需要在类端实现,而你可能在实例端实现了。相反,你的集合......必须在实例端。哪个消息不被理解(错误详情总是有帮助)?它应该在调试器中说,这将有助于澄清。
答案 1 :(得分:0)
我发现您的代码还有两个问题:
所以初始化程序将是
make: aMake color: aColor
"sets the instance variables"
make := aMake.
color := aColor.
答案 2 :(得分:0)
正确完成所有这些事情的参考书是:
http://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X
单击“Look Inside”图片,您将能够访问目录和构造函数方法。
我显然无法复制这里的东西,所以这里有一个小的提取图片。