首页 > 解决方案 > 吱吱声:创建具有指定行和列的矩阵

问题描述

我只是想在 Squeak (Smalltalk) 中进行分配,但我不知道如何创建具有特定行数和列数的矩阵。

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

标签: matrixsmalltalksqueak

解决方案


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

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

aMatrix := Matrix new:3

实际上确实

aMatrix := Matrix rows: 3 columns: 3,这恰好是您正在搜索的内容。

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

注意:不要对变量使用大写字母(根据您的分配进行评论A :=

编辑:为什么不对本地/实例变量使用大写字母?

开头的大写字母是为全局变量保留的。你有这样的喜欢TranscriptSmalltalk等等。例如,类名也是全局的,这就是你有Matrix不是 matrix的原因。对于类实例,您使用 previx withaan像我使用aMatrix的是 class 的实例Matrix

不同的 Smalltalk 风格之间可能存在细微差别。例如,在 Smalltalk/X 中,类变量以大写字母开头,据我所知,在 GNU Smalltalk 中并非如此。


推荐阅读