我遵循了这个先前的主题如何在Smalltalk中管理2D数组?但这并没有帮助我,请帮助我。
我正在尝试创建NXN数组,然后将它们打印出来。例如2x2数组:我缺少什么?
|testArr|.
testArr := (Array new: 2)
at: 1 put: ((Array new: 2) at: 1 put: '0'; at: 2 put: 'X');
at: 2 put: ((Array new: 2) at: 1 put: 'P'; at: 2 put: 'Y').
1 to:2 do:[:a|
1 to:2 do:[:b|
Transcript show: testArr at:a at:b.
].
].
错误发生在使用unknow选择器的脚本中。我该怎么解决?
您的代码有几个问题:
首先,您描述的错误消息。我猜全长说:
MessageNotUndertood:ThreadSafeTranscript >> show:at:at:
因此,这意味着您应设置一些括号以将正确的消息发送到正确的对象。尝试:
Transcript show: ((testArr at:a) at:b).
现在,您的数组分配也出现了问题。
在Smalltalk / Pharo / Squeak中,如果发送at:put:
到数组,它将返回您分配的对象,即的第二个参数at:put:
,而不是接收者。因此,在您的示例中,变量testArr
不包含数组数组,而是字符串'Y'。
如果您确实要使用消息级联;
,则必须yourself
在级联末尾将消息发送到阵列。
像这样:
testArr := (Array new: 2).
testArr at: 1 put: ((Array new: 2) at: 1 put: '0'; at: 2 put: 'X'; yourself).
testArr at: 2 put: ((Array new: 2) at: 1 put: 'P'; at: 2 put: 'Y'; yourself).
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句