Smalltalk-80 字符 meaning/usage

Smalltalk-80 character meaning/usage

这些字符←, ≡, ¬, ≠, ⌾, 的确切含义是什么以及如何使用Smalltalk-80?

考虑以下表达式:(取自 smalltalk-80 源代码)

  1. ^self class ≡ x ≡ false
  2. ^mem ◦ ¬448 ≠ 0
  3. strm frame ← 15000 ⌾ frame origin y rect: 20000 ⌾ frame corner y.
  4. neg ← (aStream ∢ 45 "-" ifTrue: [true] ifFalse: [aStream ∢ 21 "**¬**"]).

注意:此示例是从 link 中找到的原始 Xerox Alto 磁盘中提取的:http://bitsavers.trailing-edge.com/bits/Xerox/Alto/disk_images/

听起来这是来自施乐内部版本的 Smalltalk-80 的源文件。对于 public 版本,他们必须用 ASCII 替换这些“不寻常的”字符(需要自定义字体字形),只保留 字形用于 _^ ASCII 字符.

这是根据我对 St76/78 的经验做出的最佳猜测(更新:Dan Ingalls 确认):

  1. 分配如 var ← object。在 St80 中也是如此。

  2. rcvr word← argword: 的替代方法,通常表示分配给接收器的一个时隙(例如 x←,如 point x ← 100)。 St80 只允许以冒号结尾的关键字 :.

    解析器将 视为较低的优先级,因此您可以在它的两边都有关键字表达式。例如

    a foo: b ← c bar: d

    将评估 c bar: d 并将结果作为第二个参数传递给 a 的 foo:← 方法。

  3. 索引如 array◦index。 St80 使用 at: 代替。

  4. ◦← 相当于 St80 的 at:put:array◦index ← value

  5. 身份,喜欢St80的==

  6. ¬ 负数的文字,如 ¬1 中的 -1。解析器将 - 视为二进制消息选择器,因此必须将另一个符号用于负数文字。

  7. 不等于,像St80的~=

  8. 不一样,像 St80 的 ~~

  9. 创建一个点,就像 St80 的 @

  10. 匹配流中的标记。如果从流中读取的下一个标记与参数匹配,则使用并返回它。否则它会回答 false.

有关详细信息,请查看 Smalltalk Zoo 网站。