gpt4 book ai didi

runtime-error - Ren-C 错误 :; "word is bound relative to context not on stack"

转载 作者:行者123 更新时间:2023-12-04 07:30:20 25 4
gpt4 key购买 nike

我正在使用 experimental Ren-C implementation Rebol3。我无法理解这个错误:

f: func [x /local y][
emit: func [x] [y]
y: 0
forall x [emit f []]
0
]

f [0 0]

** Script error: y word is bound relative to context not on stack

** Where: emit forall f do catch either either --anonymous-- do trap either --anonymous--

** Near: ... y



代码有什么问题?

最佳答案

这是所谓的 specific binding 的副产品,并且按预期运行。

问题是,由于您对 f 使用的是 FUNC 而不是 FUNCTION , emit不是 f 的局部变量。每次运行 f ,您正在覆盖全局 emit , 而 y是每个特定实例化的本地。

因此,每次调用时都会覆盖的全局发射最终会得到一个发射函数的版本,其 y 的概念与对不再存在的 f 的调用相关。

如果你真的打算创建一个新的 local 来保存一个独特的函数——具有独特的 y 概念——每次运行时,你可以明确地这样做:

f: func [x /local y emit][
emit: func [x] [y]
y: 0
forall x [emit f []]
0
]

f [0 0]

或隐含地:
f: function [x] [
emit: func [x] [y]
y: 0
forall x [emit f []]
0
]

f [0 0]

关于runtime-error - Ren-C 错误 :; "word is bound relative to context not on stack",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42873529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com