我一直在网上寻找Pharo中@
运算符的含义,但找不到任何东西。
Pharo @
运算符是什么意思?例如,为什么25@50
被评估为:"(25@50)"
?
在Smalltalk中,@
符号用于创建类Point
的实例。此类的实例具有两个值x
和y
。您可以使用Point
消息创建x:y:
,如下所示:>
Point x: 3 y: 4.
但是,像这样使用消息
@
不太冗长
3 @ 4
创建相同的东西。
注意,虽然x:y:
是您发送给类Point
的消息,但消息@ 4
被发送给整数3
。换句话说,前者是类消息,后者是实例消息。
注意,由于许多人写的是3@4
而不是3 @ 4
,因此有产生令人惊讶的副作用的风险。实际上
3@-4
原则上应该是
Point
,坐标为3
和-4
。但是,Smalltalk语法是不同的,会将其解析为带有选择器@-
和自变量4
发送到接收器3
的消息。这就是为什么某些方言将异常解释为将消息解释为3 @ -4
的原因,这可以通过在@-
中实现方法Number
或通过调整解析器来实现。
在Pharo中,这是Number类中定义的方法