【问题标题】:Meaning of @-sign in GUI definition of a shape?@-sign 在形状的 GUI 定义中的含义?
【发布时间】:2017-10-31 18:27:37
【问题描述】:

例如,Lessphic Tutorial(第 6 页)中是这样写的:

aShape := ShapedView withShape: (0@0 corner: 100@100).
aShape := (0@0 corner: 100@100) shapedView.

“@”是什么意思?它是具有 x 和 y 坐标的点吗?这种符号可能起源于形态。但是“@-sign”很难用谷歌搜索。

【问题讨论】:

  • 是的,是Point。另请注意,您不需要谷歌它。只要寻找它的实现者,或者调试表达式0 @ 0,你就会明白。
  • 它并非起源于 Morphic,但在很久以前,它已经在 Smalltalk-80 中了。
  • @Leandro Caniglia Fantasitc!你会写一个单行的答案吗?所以我可以接受并关闭已回答的问题?谢谢。
  • @aka.nice 谢谢!我真的来自不同的社区,有很多东西要学。您是否还知道 2×3 矩阵变换(例如“matrixTransform2x3”)的来源? Lessphic 教程(上面链接)中也提到了这一点。 (我的意思是我知道这是基本的线性代数,但无论如何。)
  • @mrsteve 不,变换矩阵不在“经典”Smalltalk 中。它们似乎是这个框架的产物。然而,Matrix 也是 Smalltalks 的大部分,用来表示一个 2D 矩阵。并且变换矩阵肯定会执行坐标操作平移和旋转

标签: user-interface smalltalk pharo squeak morphic


【解决方案1】:

尽管人们可能会因使用 @+= 等符号而感到困惑,并将它们视为保留(即编译器已知) ),在 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 用于ReadStream on: 'hello world''234.5' asNumber 用于Number readFromString: '234.5' 等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多