【问题标题】:Squeak: Creating a Matrix with Specified Rows and Columns吱吱声:创建具有指定行和列的矩阵
【发布时间】:2019-04-27 05:47:29
【问题描述】:

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

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

【问题讨论】:

    标签: matrix smalltalk squeak


    【解决方案1】:

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

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

    aMatrix := Matrix new:3

    确实如此

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

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

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

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

    开头的大写字母是为全局变量保留的。你有 TranscriptSmalltalk 等。例如,类名也是全局变量,这就是为什么你有 Matrixnot matrix。对于类实例,您使用带有aan 的前缀,就像我使用的aMatrix 是类Matrix 的一个实例。

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

    【讨论】:

    • 感谢您的回答,非常有帮助!关于变量的大写字母,我必须这样做,这是赋值的一部分,我必须有特定的变量名称。但是你为什么说我不应该使用大写的变量呢?
    • @Bionic_Beadle 欢迎您:)。我进行了编辑以在评论中回答您的问题。请下次尝试创建一个单独的问题,因为当有人搜索它时更容易找到。
    【解决方案2】:

    我现在有了解决方案,任何人都想知道如何做到这一点。它是 var := Matrix rows: A columns: B. 创建一个矩阵 (A x B),其中 A 和 B 是整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多