带参数的smalltalk方法调用
我在smalltalk中编写了以下方法:带参数的smalltalk方法调用,smalltalk,Smalltalk,我在smalltalk中编写了以下方法: initializeWithStart: startWith step: theStep count: theCount self initialize. startNumber := startWith. stepSize := theStep. countUntil := theCount. 我只想在从工作区创建一个对象之后调用这个方法。于是我写道: mySq := ArithmeticsS new. mySq initializeWithSta
initializeWithStart: startWith step: theStep count: theCount
self initialize.
startNumber := startWith.
stepSize := theStep.
countUntil := theCount.
我只想在从工作区创建一个对象之后调用这个方法。于是我写道:
mySq := ArithmeticsS new.
mySq initializeWithStart: '2' step:'4' count:'10'.
为什么会出现错误“MessageNotUnderstanding:undefinedobject>>initializeWithStart:step:count:”?如果没有更多上下文,我们无法确定,但看起来您是在类端而不是实例端创建了新方法 在工作区中,您选择将消息发送到实例 查找、评估(打印) 如果该方法位于类端,则为真。删除该方法并将其保存在实例端 现在评估
ArithmeticsS new respondsTo: #initializeWithStart:step:count:
使用new
,这将检查实例端的方法应该是真的。根据您发布的信息,我猜它是假的,这意味着您没有将该方法保存在正确的位置
查看您的Smalltalk方言文档,以确认如何保存实例方法。您应该这样实例化:
mySq := ArithmeticsS new initializeWithStart: 2 step:4 count:10.
看起来像是
arithmaticsnew
返回nil
。什么是算术的超类?您是否在算术中重写了new
,我们可能需要更多的上下文,如@Uko saysAlso,您确定您执行了这两行吗?一种可能是选择两行,然后“执行”它们(从关联菜单或通过键盘快捷键),或者逐行“执行”它们“第一行,查看您分配给变量的内容。另外,是否存在算术类的initialize实例方法定义?如果您同时执行了这两个语句并出现错误,则initialize方法返回nil(no^与initializeWithStart:step:count类似,它也返回nil)
mySq := ArithmeticsS new initializeWithStart: 2 step:4 count:10.