问题描述
这些字符←、≡、¬、≠、⌾、和∢的确切含义是什么?在Smalltalk-80中如何使用?
考虑以下表达式:(取自 smalltalk-80 源代码)
^self class ≡ x ≡ false
^mem ◦ ¬448 ≠ 0
strm frame ← 15000 ⌾ frame origin y rect: 20000 ⌾ frame corner y.
neg ← (aStream ∢ 45 "-" ifTrue: [true] ifFalse: [aStream ∢ 21 "**¬**"]).
注意:此示例摘自以下链接中的原始 Xerox Alto 磁盘:http://bitsavers.trailing-edge.com/bits/Xerox/Alto/disk_images/
解决方法
听起来像是来自施乐内部版本的 Smalltalk-80 的源文件。对于公开发布,他们必须用 ASCII 替换这些“不寻常的”字符(需要自定义字体字形),只保留 plugins: [
eslint({
include: '**/*.js',throwOnError: true,}),babel({
babelHelpers: 'bundled',exclude: 'node_modules/**',resolve({
browser: true,styles({
modules: true,]
和 ←
的 ↑
和 _
字形ASCII 字符。
这是根据我使用 St76/78 的经验得出的最佳猜测(更新:Dan Ingalls 确认):
-
^
赋值,如←
。在 St80 也一样。 -
var ← object
是rcvr word← arg
的替代,通常表示分配给接收者的一个时隙(例如word:
中的x←
)。 St80 只允许以冒号point x ← 100
结尾的关键字。解析器将
:
视为较低的优先级,因此您可以在其两侧都有关键字表达式。例如←
将评估
a foo: b ← c bar: d
并将结果作为第二个参数传递给 a 的c bar: d
方法)。 -
foo:←
索引如◦
。 St80 使用array◦index
代替。 -
at:
相当于 St80 的◦←
,如at:put:
-
array◦index ← value
身份,如 St80 的≡
-
==
文字表示负数,如¬
表示 -1。解析器将¬1
视为二进制消息选择器,因此必须将另一个符号用于负数文字。 -
-
不相等,就像 St80 的≠
-
~=
不完全相同,就像 St80 的≢
-
~~
创建一个 Point,就像 St80 的⌾
-
@
匹配来自流的令牌。如果从流中读取的下一个标记与参数匹配,则使用并返回它。否则它会回答∢
。
有关详细信息,请访问 Smalltalk Zoo 网站。