在 Smalltalk 中,@符号用于创建类的实例Point。这样一个类的实例有两个 ivarsx和y。您可以Point使用该x:y:消息创建一个,如下所示
Point x: 3 y: 4.
Run Code Online (Sandbox Code Playgroud)
但是,它更简洁使用信息@像这样
3 @ 4
Run Code Online (Sandbox Code Playgroud)
创造同样的东西。
请注意,虽然x:y:是您发送给类Point的消息,但该消息@ 4是发送给整数的3。换句话说,前者是类消息,后者是实例消息。
请注意,由于许多人写3@4而不是3 @ 4,这有产生令人惊讶的副作用的风险。实际上
3@-4
Run Code Online (Sandbox Code Playgroud)
应该(原则上)Point与坐标3和-4。然而,Smalltalk 语法是不同的,它将把它解析为带有选择器@-和参数的消息4发送给接收者3。这就是为什么有些方言破例使得消息被解释为3 @ -4,这可以通过实现该方法来实现@-在Number或通过调整解析器。