我在smalltalk中编写了以下方法:
initializeWithStart: startWith step: theStep count: theCount
self initialize.
startNumber := startWith.
stepSize := theStep.
countUntil := theCount.
我只想在从工作区创建对象后调用此方法。所以我写道:
mySq := ArithmeticsS new.
mySq initializeWithStart: '2' step:'4' count:'10'.
为什么我会收到错误“MessageNotUnderstood:undefinedobject>> initializeWithStart:step:count:”?
答案 0 :(得分:1)
我们不能在没有更多上下文的情况下肯定地说,但看起来你在类侧而不是实例端创建了新方法。
在工作区中,您选择将消息发送到实例。
要找出,评估(打印)
ArithmeticsS respondsTo: #initializeWithStart:step:count:
如果方法是在班级一侧,那将是真的。删除该方法并将其保存在实例端。
现在评估
ArithmeticsS new respondsTo: #initializeWithStart:step:count:
使用new
,这将检查实例端的方法。 应该是真的。我根据您发布的信息猜测它是假的,这意味着您没有将方法保存在正确的位置。
检查您的方法Smalltalk的文档,以确认如何保存实例方法。
答案 1 :(得分:0)
您应该像这样实例化:
mySq := ArithmeticsS new initializeWithStart: 2 step:4 count:10.