这些字符的确切含义是什么?, ?, ¬, ?, ?, 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
将 evalc bar: d并将结果作为第二个参数传递给 a 的foo:?方法)。
?索引如array?index. St80 使用at:代替。
??相当于ST80的at:put:作为array?index ? value
? 身份,如 St80 ==
¬负数的字面量,如¬1-1。解析器将其-视为二进制消息选择器,因此必须将另一个符号用于负数文字。
? 不相等,就像 St80 一样 ~=
? 不一样,就像 St80 一样 ~~
? 创建一个点,就像 St80 一样 @
?匹配流中的令牌。如果从流中读取的下一个标记与参数匹配,则使用并返回它。否则它会回答false。
有关更多信息,请查看Smalltalk Zoo网站。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |