我只是想在Squeak(Smalltalk)中进行分配,而且我不知道如何创建具有特定数量的行和列的矩阵。
我知道可以创建一个A := Matrix new:3.
之类的3x3矩阵,但是我需要一个3x2矩阵。系统浏览器对于我对如何执行此操作的帮助不大,而且我已经在互联网上搜索了一段时间,并且没有找到任何帮助的方法。谁能举一个示例代码行,说明如何创建3x2矩阵?
答案 0 :(得分:5)
您应该了解Smalltalk如何处理构造函数-始终检查Class类。
如果您检查Matrix class
,则会发现#new:
在内部使用^ self rows: dimension columns: dimension
。这意味着您:
aMatrix := Matrix new:3
实际上是
aMatrix := Matrix rows: 3 columns: 3
,恰好是您要搜索的内容。
在我眼里,#new:
消息不是一个好的选择。我希望有一个#squareSize:
或类似的东西。
注意:请勿将大写字母用作变量(根据您的A :=
设置进行评论)
编辑:为什么不对局部/实例变量使用大写字母?
开头的大写字母保留用于全局变量。您拥有Transcript
,Smalltalk
之类的信息。例如,类名也是全局变量,这就是为什么您拥有Matrix
和 not matrix
的原因。对于类实例,您可以将previx与a
或an
一起使用,就像我曾经使用过aMatrix
是类Matrix
的实例一样。
不同的Smalltalk口味之间可能会有糖浆差异。例如,在Smalltalk / X中,类变量以大写字母开头,据我所知,在GNU Smalltalk中不是这种情况。
答案 1 :(得分:2)
对于任何想知道如何执行此操作的人,我现在都有解决方案。它的
var := Matrix rows: A columns: B.
创建一个矩阵(A x B),其中A和B是整数。