Pharo中at(“ @”)运算符是什么?

问题描述 投票:3回答:2

我一直在网上寻找Pharo中@运算符的含义,但找不到任何东西。

Pharo @运算符是什么意思?例如,为什么25@50被评估为:"(25@50)"

pharo
2个回答
3
投票

在Smalltalk中,@符号用于创建类Point的实例。此类的实例具有两个值xy。您可以使用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或通过调整解析器来实现。


0
投票

在Pharo中,这是Number类中定义的方法

© www.soinside.com 2019 - 2024. All rights reserved.