评估“可变变量”

2023-12-19

我正在使用以下内容创建一个动态变量(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 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

评估“可变变量” 的相关文章

  • REBOL3 - 不同分支之间有什么区别?

    不同的 Rebol 3 分支之间有什么区别 特别是新的 REN 分支 是它们运行的 平台 功能集 代码组织 C 标准合规性吗 这是一个注定会过时的答案 因此设置为社区维基 此信息截至Sep 2015 因此 如果在一段时间后更新此答案 请也修
  • 在 Rebol 中计算行数最快/最有效的方法是什么?

    给定一个字符串string 计算其中行数最快 最有效的方法是什么 将接受任何 Rebol 风格的最佳答案 我一直在这样的假设下工作parse some thru 组合是遍历字符串的最快方法 但我不确定 因此转向 SO count lines
  • 使用字符串创建 Red 语言的单词和路径

    我有字符串在namelist 对应于应用程序中的变量和字段名称 该函数应该从名称列表中读取字符串 添加 f 以获取 field names 然后将变量值放入相应的字段中 我尝试了以下代码 没有给出任何错误 但也不起作用 namelist v
  • 如何将 IN 与块而不是对象一起使用?

    Rebol 中的 IN 函数查找字段是否在对象中 USAGE IN object word DESCRIPTION Returns the word or block in the object s context IN is a nati
  • 评估“可变变量”

    我正在使用以下内容创建一个动态变量 PHP 术语中的 变量变量 foo test1 set to word rejoin foo result data array 5 但是如何动态获取名为 test1 result data 的结果变量的
  • 如何使用 Rebol 3 将 URL 传递给 cookie?

    使用 R3 我需要从使用 cookie 的网站获取页面的本地化版本来处理此问题 在 REBOL 2 x 中 我可以这样做 page http www rci com resort directory resortDetails resort
  • rebol解析函数可以创建完全解析css2/css3的规则吗?

    rebol 解析函数的能力有限制吗 它是否能够解析整个 css2 css 3 规范 或者是否会遇到理论上不可能形成某些规则的情况 HostileFork 回答后更新 我的意思是在正则表达式中我认为这是相当不可能的 解析是否更强大 如果是 这
  • 为什么 Rebol 中的“上下文”和“对象”功能不同,但本质上是相同的?

    一方面我们有 gt gt source object object make function Defines a unique object blk block Object words and values make object ap
  • REBOL 中的 If...else if...else

    我注意到 REBOL 没有内置if elsif else语法 就像这样 theVar 60 This won t work if theVar gt 60 print Greater than 60 elsif theVar 3 print
  • 如何从“Android终端模拟器”调用Rebol解释器?

    我需要从以下位置调用 Rebol 语言解释器作为运行脚本文件的命令 例如rebol script name reb 所以我不是在寻找仅在 Rebol 中启动的 APK 应用程序REPL http en wikipedia org wiki
  • 如何获取HTTP 404响应的响应内容

    有没有比直接通过 tcp 访问主机更简单的方法来获取 HTTP 404 响应的内容 这是 404 响应的示例 内容如下 HTTP 1 1 404 Object Not Found Server CouchDB 1 3 0 Erlang OT
  • 什么是终结符和非终结符?

    我正在读 雷布尔 维基百科页面 https en wikipedia org wiki Rebol 解析表达式是用 parse 方言编写的 与 do 方言一样 它是数据交换方言的面向表达式的子语言 与 do 方言不同 parse 方言使用表
  • 关于 UTYPE 的了解!在《REBOL 3》中?

    我能找到的关于数据类型 UTYPE 的唯一信息 尚未针对 R3 进行记录 和 用户定义的数据类型 但仍然给我带来一丝希望 即我可以突破 Rebol 的预定义数据类型规范 并以更直接的方式制定函数的多态性 只是 我不知道如何处理UTYPE 试
  • Red语言的并行列表赋值

    我有 2 个清单 alist a b c d blist 1 2 3 4 实际上它们是很长的列表 如何一次性将列表中的变量分配给列表中的相应值 因此 a 变为 1 b 变为 2 依此类推 I tried foreach i alist j
  • 块的逆是什么:以 rebol / red 加载文本

    假设我有一些 rebol red 代码 如果我加载源文本 我会得到一个块 但是如何从块中取回源文本 我尝试了表单块 但它没有返回源文本 text Red Title Red Pretty Printer out none output te
  • Rebol 中的“reword”功能是什么以及如何使用它?

    我看到有人提到reword今天可以使用 但是它的文档非常简短 它看起来像 shell 脚本环境变量替换 或者可能是正则表达式替换 但有所不同 我该如何使用这个功能以及我会遇到什么样的问题 这里有龙 The rewordfunction 是一
  • “模块中导出单词”出现问题

    让我们mod reb REBOL Type module Name mod export add 1 2 让我们测试一下 reb import mod Running r3 test reb got Script error add has
  • 在 REBOL 中动态添加单词到上下文

    想象一下以下 REBOL 代码 foo context bar 3 我现在有一个上下文foo其中 bar被定义为 如何动态地将新单词注入到此上下文中 是否可以 我试过了 set any in foo baz 3 但这不起作用 因为表达式in
  • 改变路径或细化

    我想改变a b在一个块内a c 或者甚至可能a 我这样做的正常方法是change test a b change test 1 c 但它只改变了第一部分 即a to c gt gt test c b 无法访问路径test 2 either
  • 用Red语言制作GUI对象

    我有一个小面板的以下简单代码 view t text label f field button Click here t text f text 但我必须制作其中两个并将它们放在一个窗户上 我想创建单个对象类并从中创建 2 个对象 我看到可

随机推荐