在Smalltalk中调用构造函数方法
我有一个制作汽车物体的课程。它有两个实例变量:Make和Color。我在工作区内调用此方法时遇到问题(如下所述) 类方法-构造函数在Smalltalk中调用构造函数方法,smalltalk,pharo,Smalltalk,Pharo,我有一个制作汽车物体的课程。它有两个实例变量:Make和Color。我在工作区内调用此方法时遇到问题(如下所述) 类方法-构造函数 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
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.
工作区(调用代码)
打这条电话时,我听到“信息不清楚”。这里有什么问题?一切看起来都很好。可能的问题是,您的“构造函数”(在Smalltalk中更可能被称为“实例创建消息”)需要在类端实现,而您可能已经在实例端实现了。相反,你的设置。。。必须在实例端。哪条消息不被理解(错误详细信息总是有帮助的)?它应该在调试器中显示,这将有助于澄清。我注意到您的代码还有两个问题:
- 在smalltalk中,setter不使用“set”
- 实例变量的首字母为小写
make: aMake color: aColor
"sets the instance variables"
make := aMake.
color := aColor.
正确完成所有这些事情的参考书是: 单击“查看内部”图片,您将能够访问目录和构造函数方法receipe 我显然不能复制这里的东西,所以这里有一个小的摘录图片
我不确定
集的注释。你确实没有看到那么多。但它们确实存在<代码>设置值:
例如。我的stock Pharo图像中有1199个以“set”开头的方法。#setX:y:(注意set仅在开头)IIRC是最佳实践中的模式之一。通常我太懒了,只使用访问器。我的问题是IDE
make: aMake color: aColor
"sets the instance variables"
make := aMake.
color := aColor.