REBOL 布局 : How to create layout words automatically - word has no context?

标签 rebol rebol3 rebol2

使用 REBOL/View 2.7.8 Core,我想通过自动为各种布局项分配单词来预先准备 View 布局,如下例所示。
代替

prepared-view: [across 
                cb1: check 
                label "Checkbox 1"
                cb2: check
                label "Checkbox 2"
                cb3: check
                label "Checkbox 3"
                cb4: check
                label "Checkbox 4"
                ]
    view layout prepared-view

因此,我想要 cb1通过cb5自动创建,例如:
prepared-view2: [ across ]
    for i 1 4 1 [
        cbi: join "cb" i
        cbi: join cbi ":"
        cbi: join cbi " check"
        append prepared-view2 to-block cbi
        append prepared-view2 [
        label ]
        append prepared-view2 to-string join "Checkbox " i 
        ]
    view layout prepared-view2

然而,虽然 difference prepared-view prepared-view2显示 没有正在解析的 block ( == [] )的差异,第二个脚本会导致错误:
    ** Script Error: cb1 word has no context
    ** Where: forever
    ** Near: new/var: bind to-word :var :var

我花了几个小时试图理解为什么,我认为新词需要以某种方式绑定(bind)到特定的上下文,但我还没有找到任何解决问题的方法。

我需要做什么?

最佳答案

bind prepared-view2 'view  
view layout prepared-view2

创建正确的绑定(bind)。

这是另一种动态创建布局的方法
>> l: [ across ]
== [across]
>> append l to-set-word 'check
== [across check:]
>> append l 'check
== [across check: check]
>> append l "test"
== [across check: check "test"]
>> view layout l

然后您可以使用循环来创建不同的变量以添加到您的布局中。

关于REBOL 布局 : How to create layout words automatically - word has no context?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431247/

相关文章:

rebol - 如何在 REBOL3 中打开/写入/读取端口?

object - Rebol2 中的 OBJECT 和 CONTEXT 是同义词吗?

unicode - 我如何使用单字节和二进制! Rebol 3 中的字节数组?

rebol - |红色编程语言|如何从网页中获取 Cookie?

rebol - 修复 Rebol3 示例计算器以使用正常的数学运算符优先级

url - Rebol url 中的转义符号

rebol - 有没有更好的方法来重新设计 REBOL VID 模态对话框的样式?

parsing - 在 PORT 上使用 PARSE!值(value)

gmail - 如何从gmail下载电子邮件