如何在smalltalk pharo中实现getter

Ore*_*iaz 0 smalltalk pharo

Personsetters和我一起上课,getters喜欢这样:

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

name
^name

name: anObject
name:= anObject

document
^document

document: anObject
document:= anObject
Run Code Online (Sandbox Code Playgroud)

然后我在我的类中实例化 TestPerson

setUp
p1:= Person name:'Alice' document:='12345'
Run Code Online (Sandbox Code Playgroud)

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

p1.getName().equals("Alice");
Run Code Online (Sandbox Code Playgroud)

Est*_*nLM 10

p1 name = 'Alice'
Run Code Online (Sandbox Code Playgroud)

你真的需要阅读一本关于 Smalltalk 的书,你缺少基础知识,“通过堆栈溢出学习”似乎不是最好的方法。

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


小智 9

我想解释为什么 Esteban 的建议很重要,以及为什么在 Smalltalk 的情况下它是特别好的建议。

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

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

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

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