REBOL布局:如何自动创建布局单词 - 单词没有上下文?

jjr*_*jr_ 7 rebol rebol3 rebol2

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

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
Run Code Online (Sandbox Code Playgroud)

我就喜欢这样的话cb1cb5将被自动创建,如:

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
Run Code Online (Sandbox Code Playgroud)

但是,虽然在解析的块difference prepared-view prepared-view2没有显示差异(== []),但第二个脚本会导致错误:

    ** Script Error: cb1 word has no context
    ** Where: forever
    ** Near: new/var: bind to-word :var :var
Run Code Online (Sandbox Code Playgroud)

我花了好几个小时试图理解为什么,我想某些新词需要绑定到特定的上下文,但我还没有找到解决问题的方法.

我需要做什么?

Gra*_*hiu 2

bind prepared-view2 'view  
view layout prepared-view2
Run Code Online (Sandbox Code Playgroud)

创建正确的绑定。

这是动态创建布局的另一种方法

>> 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
Run Code Online (Sandbox Code Playgroud)

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