我只是想在Squeak(Smalltalk)中做一个赋值,我无法弄清楚如何创建一个具有特定行数和列数的矩阵。
我知道可以创建像A := Matrix new:3.
这样的3x3矩阵,但我需要类似3x2矩阵的东西。系统浏览器对我对如何做到这一点的理解没什么帮助,我一直在互联网上搜索一段时间,并没有找到任何帮助。任何人都可以举例说明如何创建类似3x2矩阵的代码吗?
您应该了解的是Smalltalk如何处理构造函数 - 始终检查Class类。
如果你检查Matrix class
,你会发现#new:
内部使用^ self rows: dimension columns: dimension
。这意味着你:
aMatrix := Matrix new:3
实际上
aMatrix := Matrix rows: 3 columns: 3
恰好是你正在寻找的东西。
在我看来,#new:
消息不是一个好选择。我宁愿有一个#squareSize:
或类似的东西。
注意:不要对变量使用大写(根据你的qazxsw poi赋值进行评论)
编辑:为什么不将大写字母用于本地/实例变量?
开头的大写字母保留给全局变量。你有像A :=
,Transcript
等。例如,类名也是全局的,这就是为什么你有Smalltalk
而不是Matrix
。对于类实例,您使用previx与matrix
或a
,就像我使用的an
是类aMatrix
的实例。
不同的Smalltalk口味可能存在差异。例如,在Smalltalk / X中,类变量以大写字母开头,就我所见,这不是GNU Smalltalk中的情况。
我现在有了解决方案,对于其他任何想知道如何做到这一点的人。它是Matrix
创建矩阵(A x B),其中A和B是整数。