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

时间:2017-10-31 18:27:37

标签: user-interface smalltalk pharo squeak morphic

例如,在Lessphic Tutorial(第6页)中,写入以下内容:

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

“@”是什么意思?是x和y坐标的点吗?这种表示法可能起源于形态。但是“@ -sign”很难谷歌。

1 个答案:

答案 0 :(得分:3)

尽管人们可能会因使用@+=等符号而感到困惑,并将其视为 reserved (即,编译器已知,在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的{​​{1}},ReadStream on: 'hello world'的{​​{1}}等。