如何在 Squeak 中调用方法?

How can I call a method in Squeak?

我正在调查 Squeak Smalltalk。我以某种方式定义了一个初始化并打印初始值的对象(相关说明在作业中)。然后我不得不定义一个方法(getName),我做了,但我不知道如何在工作区中调用该方法。

为了测试初始化​​,我使用了

a := Animal new.
Transcript show: a; cr.

但除此之外,我只是不知道该怎么做。我尝试了 a getNamea.getName,等等。什么是正确的方法?

请帮忙!我什至不知道 Google.

好的,我想我明白了。确实是a getName,但这样的行与return值无关。所以我用了 Transcript show: a getName; cr. 并且成功了! Transcript 似乎也是一个对象,: 是传递参数的方式。

在 Smalltalk 中,您向接收者发送消息

例如
Animal newnew 消息发送到 Class Animal.
这是 一元消息 的示例。

Transcript show: ashow: 消息发送到 Class Transcript,参数为 a
这是 关键字消息.

的示例

Transcript cr 将消息 cr 发送到 Class Transcript.
这是 一元消息 .

的另一个示例

Transcript show: a ; cr .
这是一个 消息级联 的示例,其中连续的几条消息被发送到同一个接收方。

消息级联中,您只需输入一次收件人姓名,使用;分隔每条消息的其余部分。

Transcript show: a ; cr .

在 Smalltalk 中,有参数的关键字必须有冒号后缀。

约定是简单访问器使用与它们访问的实例变量相同的名称; Class Object 的实例将具有 anObject.

形式的变量名

所以一个名为 name 的实例变量会有一个名为 name 的 getter 和一个名为 name:

的 setter

按照惯例,我们会有:

anAnimal := Animal new.
Transcript show: anAnimal name ;
           cr .

在这里,我们将 name 消息发送到 anAnimal。它 return 是一种动物的名字。作为一元消息,它的优先级高于关键字消息 Transcript show: <something>,因此首先被评估。 anAnimal name 消息中的 return 成为 Transcript show: <something> 消息的参数。

你可以自己看看。在工作区中,突出显示 anAnimal name,然后单击并选择 'Inspect it'。这将调出一个 Inspector window,它会向您显示由 anAnimal name 消息 return 编辑的对象。

这些答案可以帮助您理解:
Explain a piece of Smalltalk code
Keyword messages in smalltalk

本文 Beginning to Smalltalk: Hello World 使用 Transcript show: 'Hello World'.

对其进行了更详细的介绍