@-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'
等
比如在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'
等