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

Pharo: Refers to class name instead of "self class"

我有一个简单的 class Amount,其中包含字段 valueunit 以及相应的访问器。现在我想创建一个 class 方法来构造数量对象,如下所示:

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 很陌生)

Refers to class name instead of "self class"

是一个提示,建议你使用

amount := self new.

而不是

amount := Amount new.

由于你的方法是class方法self指的是class。

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