gpt4 book ai didi

smalltalk - 如何在 smalltalk 中创建二维数组

转载 作者:行者123 更新时间:2023-12-05 00:22:16 25 4
gpt4 key购买 nike

我已经关注了这个以前的线程
How to manage 2d array in Smalltalk?
但它没有帮助我,请帮帮我。

我正在尝试创建 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.
].
].

错误是在带有未知选择器的 Transcript 中。我能做些什么来解决它?

最佳答案

您的代码有几个问题:

首先是您描述的错误消息。我想在全长它说:

MessageNotUnderstood: ThreadSafeTranscript>>show:at:at:



所以这意味着您应该设置一些括号以将正确的消息发送到正确的对象。尝试:
Transcript show: ((testArr at:a) at:b).

现在您的 Array 分配也存在问题。

在 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).

关于smalltalk - 如何在 smalltalk 中创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com