@-sign 在形状的 GUI 定义中的含义?

Meaning of @-sign in GUI definition of a shape?

比如在Lessphic Tutorial(第6页)中,是这样写的:

aShape := ShapedView withShape: (0@0 corner: 100@100).
aShape := (0@0 corner: 100@100) shapedView.

“@”是什么意思?它是具有 x 和 y 坐标的点吗?这种表示法可能起源于态射。但是“@-sign”很难google.

尽管人们可能会对 @+= 等符号的使用感到困惑,并认为它们是 保留 (即编译器已知),在 Smalltalk 中它们都是常规方法的选择器。换句话说,它们不是保留的标记,而是(在大多数情况下)实现预期行为的有效消息选择器。

@ 的特殊情况下,如果我们搜索实现者,我们会在 Number 中找到一个,通常实现为

@ aNumber
  ^Point x: self y: aNumber

(然而,在 Pharo 中,有一个用于加速的原语,否则不需要)

此消息的原因是提供一种不那么冗长的 Point 创建方法,以便客户端只需编写 200 @ 300 而不是 Point x: 200 y: 300

顺便说一下,这种模式在 Smalltalk 中很常见。几个问题之前,在这个 [smalltalk] 标签中,我们讨论了消息 /,它是同类的快捷方式:2 / 3 等同于 (Fraction numerator: 2 denominator: 3) reduced。其他示例包括 'hello world' readStream for ReadStream on: 'hello world''234.5' asNumber for Number readFromString: '234.5'