我有一个简单的班级Amount
,其中包含字段value
和unit
以及相应的访问者。现在我想创建一个用于构造金额对象的类方法,如下所示:
value: aValue unit: anUnit
| amount |
amount := Amount new .
amount value: aValue ; unit: anUnit .
^ amount
我收到警告消息Refers to class name instead of "self class"
。我怎样才能改善这个?我尝试amount := (self class) new
,但后来收到错误A Metaclass should only have one instance!
。 (请注意,我是Pharo和Smalltalk的新手)
答案 0 :(得分:3)
指类名而不是" self class"
是一个暗示,建议你使用
amount := self new.
而不是
amount := Amount new.
由于您的方法是类方法,self
指的是该类。
在类方法中,(self class) new
(在您的示例中)将与Amount class new
相同。类(Amount)的类是Metaclass,因此是您引用的错误消息。