【问题标题】:How to implement getter in smalltalk pharo如何在 smalltalk pharo 中实现 getter
【发布时间】:2020-04-27 16:14:17
【问题描述】:

我有 Person 和我的 settersgetters 这样的课程:

Object subclass: #Person
instanceVariableName: 'name document'
classVariableName ' '
package: 'foo'

name
^name

name: anObject
name:= anObject

document
^document

document: anObject
document:= anObject

然后我在 TestPerson 中实例化我的课程

setUp
p1:= Person name:'Alice' document:='12345'

所以在这里我不明白如何实现我的 getter 来比较我的名字是否真的是 Alice。 例如在 Java 中会是这样的:

p1.getName().equals("Alice");

【问题讨论】:

  • 简单的答案是p1 name = 'Alice'。但是@EstebanLM 的建议比这要好得多。

标签: smalltalk pharo


【解决方案1】:

我想解释为什么 Esteban 的建议很重要,以及为什么对于 Smalltalk 来说它是特别是好的建议。

许多其他语言使用每个经验丰富的程序员都已经知道的非常基本的编程概念,但这些概念被淹没在特殊语法、边缘情况、异常、多层经常不一致或不相关的详细任意语言设计规则的海洋中。因此,当你学习这些语言时,挑战往往确实是“我如何在语言 Y 中做 X(一个你已经知道的简单概念)”。

这使得问“我如何用语言 Y 做 X”(就像你刚才所做的那样)是公平的。 这也使得使用有关该语言的书籍或文档变得困难,因为它们要么会尝试重新教你 X(但你已经知道 X,你只想知道如何在 Y 中做到这一点!) ,或者它们将成为一长串特殊提示和技巧的列表,揭示语言 Y 的所有特殊情况和特性(它们实际上可能不会涵盖您的特定问题,或者如果他们这样做,您将不会轻易找到它在材料中)。

Smalltalk 不同。因为 Smalltalk 是建立在一个非常小、简单且一致的概念和语法设计之上的。 因此,使用 Smalltalk,您可以花时间阅读这本书(它很短:众所周知,语法适合明信片,而且概念同样少而简单)。这本书将涵盖大多数和所有的特殊情况,因为……大多数情况下都没有这样的情况。然后,您的知识将普遍适用。它将水平(在系统的所有部分)和垂直(在系统的最高和最低抽象级别)工作。

能够专注于自己的问题,知道语言支持你并且不会妨碍你,而不是浪费你的精神能量强迫你记住愚蠢的任意事情,这是一种解放的感觉。

【讨论】:

    【解决方案2】:
    p1 name = 'Alice'
    

    您确实需要阅读有关 Smalltalk 的书,您缺少基础知识,并且“通过堆栈溢出学习”似乎不是最好的方法。

    有一个 MOOC:http://mooc.pharo.org/.
    这里有很多免费书籍:http://books.pharo.org
    这里有一些免费的普通书籍:http://stephane.ducasse.free.fr/FreeBooks.html
    在这里您可以找到更多通用文档:http://pharo.org/documentation(您可以在那里观看一些介绍性截屏视频)。

    【讨论】:

    • 我必须同意 Esteban。您应该使用 Playground(工作区)来获得 Smalltalk 的“感觉”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多