我基本上想实现可以接受参数e.x newobj := SomeClass new: 'a'。我试图以这种方式实施

initialize: bdata
    data := bdata


但这是行不通的。由于缺乏知识,我似乎犯了一些愚蠢的错误。我尝试用Google搜索,但找不到任何示例。请帮忙。

最佳答案

在Smalltalk中,newnew:不是关键字,而是常规消息。它们仅由对象的类实现。要为对象的类(而不是实例)编写方法,请在系统浏览器中单击“类”按钮。在那里,您可以实现您的new:方法。

但是请注意,命名您自己的实例创建方法new:通常不是一个好主意。由于这是常规方法,因此您可以随意命名。例如,MyClass withBData: foo。使它成为一个很好的描述性名称。看起来像

withBData: bdata
    | inst |
    inst := self new.
    inst bdata: bdata.
    ^inst

10-05 20:55
查看更多