Squeak:创建具有指定行和列的矩阵

Squeak: Creating a Matrix with Specified Rows and Columns

我只是想在 Squeak (Smalltalk) 中做一个作业,但我不知道如何创建具有特定行数和列数的矩阵。

我知道可以用 A := Matrix new:3. 之类的东西创建一个 3x3 矩阵,但我需要一个 3x2 矩阵之类的东西。系统浏览器对我理解如何执行此操作没有太大帮助,而且我已经在互联网上搜索了一段时间,但没有找到任何有用的东西。谁能举例说明如何创建 3x2 矩阵之类的代码行?

我现在有了解决方案,供任何想知道如何执行此操作的人使用。它是 var := Matrix rows: A columns: B. 创建一个矩阵 (A x B),其中 A 和 B 是整数。

您应该了解 Smalltalk 如何处理构造函数 - 始终检查 Class class.

如果您检查 Matrix class,您会发现 #new: 内部使用 ^ self rows: dimension columns: dimension。这意味着您的:

aMatrix := Matrix new:3

实际上

aMatrix := Matrix rows: 3 columns: 3,正好是你要找的

在我看来,#new: 消息不是一个好的选择。我更喜欢 #squareSize: 或类似的东西。

注意:不要将大写字母用于变量(评论基于您的 A := 分配)

编辑: 为什么 local/instance 变量不使用大写字母?

开头的大写字母是为全局变量保留的。您有 TranscriptSmalltalk 等。例如,class 名称也是全局变量,这就是为什么您有 Matrix 而不是 matrix。对于 class 实例,您将 previx 与 aan 一起使用,就像我使用的 aMatrix 是 class Matrix.[=26= 的一个实例]

不同的 Smalltalk 风格之间可能存在细微差别。例如,在 Smalltalk/X 中, class 变量以大写字母开头,据我所知,在 GNU Smalltalk 中不是这种情况。