scope - 如何在 Rebol 3 View 中设置变量并在窗口关闭后使用该值?

标签 scope rebol rebol3

我想在 Rebol 3 按钮处理程序 (GUI) 中设置一个变量,并在窗口关闭后使用该值。如何获取 View block 之外的值? 下面是一个示例代码:

view [
    v_username:  field
    button "Submit" on-action [
        username: get-face v_username 
        close-window face
    ]
]

probe username

无论 v_username 的内容如何,​​结果都是“”。

是否必须将其“声明”为全局变量?我应该从 View 的返回值中获取这个值吗?

最佳答案

调用时的'on-action block 被包装在函数 中(Rebol 函数,其中设置字被假定为该函数的本地函数)。您有几个选项可以解决此问题:

  1. 使用对象来存储值(设置路径未绑定(bind)在函数内):

    values: context [username: none]
    view [... on-action [values/username: get-face ...]]
    
  2. 使用'set设置单词。我发现这不太可靠,因为它不确定您所设置的单词的上下文:

    view [... on-action [set 'username get-face ...]]
    
  3. 尽管最好的选择可能是记住您分配给样式的单词与您正在使用的上下文相关,因此:

    view [username-field: field ...]
    username: get-face username-field
    

关于scope - 如何在 Rebol 3 View 中设置变量并在窗口关闭后使用该值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797150/

相关文章:

javascript - 使 Javascript 局部变量成为全局变量以进行递归循环

rebol - Rebol R3 有哪些配置文件?它们是如何加载的?

object - 访问对象内的字值

android - Android 上的 Rebol GUI 显示屏太小

http - 如何在Rebol3中获取HTTP响应头?

Javascript:使用不同的执行上下文执行函数

c++ - Qt:在单独的函数中使用ui指针

javascript - fn.call 后如何获取原始上下文?

user-interface - 以 Red 语言打印所有 GUI 元素的文本

raspberry-pi - 为什么 "save %test.png make image! [1024x768]"会导致 Seg Fault?