【问题标题】:Initialize an object with an array用数组初始化对象
【发布时间】:2009-06-19 09:00:15
【问题描述】:

我正在浏览(使用 Squeak)Ron Jeffries 的 Discovering Better Code: Bowling for Smalltalk Series,但我无法浏览 third 的文章。

正在创建一个新类(称为 Frame),它在构造函数中将数组作为参数。

Frame class>>new: anArray
  ^self new setRolls: anArray

Frame>>setRolls: anArray
  rolls := anArray

当我尝试在一个简单的测试中运行它时:

testFrame
  | frame rolls |
  rolls := Array with: 5 with: 4.
  frame := Frame new: rolls.

我收到以下错误:

alt text http://files.getdropbox.com/u/120566/junk/error.png

我应该如何修改#new 消息才能使用数组初始化 Frame 对象?

【问题讨论】:

    标签: smalltalk squeak


    【解决方案1】:

    我猜你未能将方法 new: 正确添加到 Frame 类。您确定将其放在类端(Frame class)而不是实例端(Frame)吗?为此,请在添加新方法之前单击“类”按钮:。

    【讨论】:

      【解决方案2】:

      你真的不想在这里覆盖new:new: 传统上是为“创建一个这个整数大小的项目”保留的,我并不惊讶它会在你身上爆炸。

      您想要的构造函数的更传统名称是fromArray:,或者甚至可能是fromCollection:,这可能会如您所愿。

      【讨论】:

        猜你喜欢
        • 2018-06-22
        • 1970-01-01
        • 2017-02-16
        • 2018-06-18
        • 1970-01-01
        • 2017-02-18
        • 2011-09-02
        相关资源
        最近更新 更多