gpt4 book ai didi

rebol - 评估 "variable variable"

转载 作者:行者123 更新时间:2023-12-04 16:34:33 29 4
gpt4 key购买 nike

我正在使用以下内容创建一个动态变量(PHP 术语中的“变量变量”):

foo: "test1"
set to-word (rejoin [foo "_result_data"]) array 5

但是如何动态获取名为“test1_result_data”的结果变量的值?我尝试了以下方法:
probe to-word (rejoin [foo "_result_data"])

但它只是返回“test1_result_data”。

最佳答案

由于您的示例代码是 REBOL 2,您可以使用 GET 获取单词的值:

>> get to-word (rejoin [foo "_result_data"])
== [none none none none none]

REBOL 3 处理上下文的方式与 REBOL 2 不同。因此,在创建新单词时,您需要明确处理它的上下文,否则它将没有上下文,并且在尝试设置它时会出现错误。这与默认情况下设置单词上下文的 REBOL 2 形成对比。

因此,您可以考虑使用如下所示的 REBOL 3 代码来设置/获取您的动态变量:
; An object, providing the context for the new variables.
obj: object []

; Name the new variable.
foo: "test1"
var: to-word (rejoin [foo "_result_data"])

; Add a new word to the object, with the same name as the variable.
append obj :var

; Get the word from the object (it is bound to it's context)
bound-var: in obj :var

; You can now set it
set :bound-var now

; And get it.
print ["Value of " :var " is " mold get :bound-var]

; And get a list of your dynamic variables.
print ["My variables:" mold words-of obj]

; Show the object.
?? obj

将此作为脚本运行会产生:
Value of  test1_result_data  is  23-Aug-2013/16:34:43+10:00
My variables: [test1_result_data]
obj: make object! [
test1_result_data: 23-Aug-2013/16:34:43+10:00
]

上面使用 IN 的替代方法可能是使用 BIND:
bound-var: bind :var obj

关于rebol - 评估 "variable variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394057/

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