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 变量不使用大写字母?
开头的大写字母是为全局变量保留的。您有 Transcript
、Smalltalk
等。例如,class 名称也是全局变量,这就是为什么您有 Matrix
和 而不是 matrix
。对于 class 实例,您将 previx 与 a
或 an
一起使用,就像我使用的 aMatrix
是 class Matrix
.[=26= 的一个实例]
不同的 Smalltalk 风格之间可能存在细微差别。例如,在 Smalltalk/X 中, class 变量以大写字母开头,据我所知,在 GNU Smalltalk 中不是这种情况。
我只是想在 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 变量不使用大写字母?
开头的大写字母是为全局变量保留的。您有 Transcript
、Smalltalk
等。例如,class 名称也是全局变量,这就是为什么您有 Matrix
和 而不是 matrix
。对于 class 实例,您将 previx 与 a
或 an
一起使用,就像我使用的 aMatrix
是 class Matrix
.[=26= 的一个实例]
不同的 Smalltalk 风格之间可能存在细微差别。例如,在 Smalltalk/X 中, class 变量以大写字母开头,据我所知,在 GNU Smalltalk 中不是这种情况。