例:
st> [ fnord := 7 ] value
私はいつも、彼らが で SystemDictionary に入ったという印象を受けていましたが、そうではSmalltalk
ありません。
st> [ fnord := 7 ] value
st> Smalltalk at: #fnord
Object: SystemDictionary new: 512 "<0x2acfca382030>" error: Invalid argument #fnord: key not found
ただし、少なくとも GNU Smalltalk では、値はどこかに永続化されているようです--- アクセスするfnord
と正しい値が返されます。
st> [ fnord := 7 ] value
st> fnord
7
更新:ブロックを分解する方法を見つけました! 本当に大変です。
st> [ fnord := 7 ] block inspect
An instance of CompiledBlock
header: 32768
clean-ness flags: 0
number of arguments: 0
number of temporaries: 0
number of literals: 4
needed stack slots: 8
method: UndefinedObject>>executeStatements
literals: [
[1] {fnord}
[2] a BlockClosure
[3] #block
[4] #inspect
]
byte codes: [
[1] source code line number 1
[3] push 7
[5] store into Global Variable {fnord}
[7] pop stack top
push Global Variable {fnord}
[9] return stack top
]
[] in UndefinedObject>>executeStatements
したがって、それは間違いなくグローバル変数に書き込んでいると考えています。