Pharo:指的是班级名称而不是" self class"

时间:2018-03-23 08:35:15

标签: smalltalk pharo

我有一个简单的班级Amount,其中包含字段valueunit以及相应的访问者。现在我想创建一个用于构造金额对象的类方法,如下所示:

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的新手)

1 个答案:

答案 0 :(得分:3)

  

指类名而不是" self class"

是一个暗示,建议你使用

amount := self new.

而不是

amount := Amount new.

由于您的方法是类方法self指的是该类。

在类方法中,(self class) new(在您的示例中)将与Amount class new相同。类(Amount)的类是Metaclass,因此是您引用的错误消息。