当您加载字符串时,默认情况下它会偏向于用户上下文:
>> f: 3
>> outside: object [
f: 4
getter: does [
print reduce compose [(load "f")]
]
]
>> outside/getter
3
事实证明这是LOAD 实现的工件,它用于intern
“将单词及其值从 lib 导入(内部化)到用户上下文中”。
为了解决这个问题,我可以避免通过 LOAD 创建潜在无用绑定的低效率,改用 TO-WORD,然后使用对象self
重新绑定它:
>> m: 10
>> inside: object [
m: 20
getter: does [
print reduce [(bind to-word "m" self)]
]
]
>> inside/getter
20
现在我的问题是:
鉴于定义性“范围界定”getter-code
的工作方式,对于这种模式和getter-text
两种输出来说,根本就没有办法——现在或未来4 20
:
>> f: 0
>> m: 0
>> ctx: context [
f: 4
m: 10
both: object [
m: 20
getter-code: does [print [f m]]
getter-text: does [impossible-print ["f" "m"]]
]
]
例如,从根本上缺少一些impossible-print
无法写入的地方?