Smalltalk-80字符含义/用法
这些字符的确切含义是什么?, ?, ¬, ?, ?, and ? 以及如何在 Smalltalk-80 中使用?
考虑以下表达式:(取自 smalltalk-80 源代码)
^self class ? x ? false^mem ? ¬448 ? 0strm frame ? 15000 ? frame origin y rect: 20000 ? frame corner y.neg ? (aStream ? 45 "-" ifTrue: [true] ifFalse: [aStream ? 21 "**¬**"]).
注意:此示例是从以下链接中找到的原始施乐 Alto 磁盘中提取的:http : //bitsavers.trailing-edge.com/bits/Xerox/Alto/disk_images/
回答
听起来这是来自施乐内部版本的 Smalltalk-80 的源文件。对于公开发布,他们必须用 ASCII 替换这些“不寻常的”字符(需要自定义字体字形),只保留?和和ASCII 字符的?字形。_^
这是基于我对 St76/78 的经验的最佳猜测(更新:由 Dan Ingalls 确认):
-
?分配如var ? object. 在 St80 也一样。 -
rcvr word? arg是word:对接收器时隙的替代,通常表示分配给接收器的时隙(例如x?,在 中point x ? 100)。St80 只允许以冒号结尾的关键字:。解析器将其
?视为较低的优先级,因此您可以在其两侧都有关键字表达式。例如a foo: b ? c bar: d将 eval
c bar: d并将结果作为第二个参数传递给 a 的foo:?方法)。 -
?索引如array?index. St80 使用at:代替。 -
??相当于ST80的at:put:作为array?index ? value -
?身份,如 St80== -
¬负数的字面量,如¬1-1。解析器将其-视为二进制消息选择器,因此必须将另一个符号用于负数文字。 -
?不相等,就像 St80 一样~= -
?不一样,就像 St80 一样~~ -
?创建一个点,就像 St80 一样@ -
?匹配流中的令牌。如果从流中读取的下一个标记与参数匹配,则使用并返回它。否则它会回答false。
有关更多信息,请查看Smalltalk Zoo网站。
- I sent this to Dan Ingalls who confirmed this is correct.