例如,在Lessphic Tutorial(第6页)中,写入以下内容:
aShape := ShapedView withShape: (0@0 corner: 100@100).
aShape := (0@0 corner: 100@100) shapedView.
“@”是什么意思?是x和y坐标的点吗?这种表示法可能起源于形态。但是“@ -sign”很难谷歌。
答案 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}}等。