Smalltalk-80 字符含义/用法

Aar*_*ark 8 smalltalk

这些字符的确切含义是什么?, ?, ¬, ?, ?, and ? 以及如何在 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 "**¬**"]).

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

Ber*_*erg 7

听起来这是来自施乐内部版本的 Smalltalk-80 的源文件。对于公开发布,他们必须用 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

    将 evalc 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网站。

  • 我将此信息发送给 Dan Ingalls,他确认这是正确的。 (2认同)