了解红色区块评估

时间:2017-07-19 12:38:53

标签: rebol red

刚开始使用Red,我很难理解如何评估块。以下内容给出了*** Script Error: panel has no value错误:

Red [ 
    needs: 'view
]

my-panel: [
    panel 300x300 [
        text "World"
    ]
]

view [
    title "Hello"

    do my-panel
]

如果我内联my-panel块的内容,但是找不到分割代码然后将其包含在视图函数块中的方法,我可以使它工作。任何人都可以给我一个真正的快速指针,指出上面的代码有什么问题吗?

1 个答案:

答案 0 :(得分:4)

红色语言包含多个DSL,view调用VID之后您使用的是DSL。 do单词在不同的上下文中有不同的含义。在红色常规语言中,它评估一个红色代码块,在VID中,它是一个关键字,允许将红色代码嵌入到VID中。到目前为止一切都那么好,但是你没有将一段红色代码传递给do,而是一块VID代码。

我想你要实现的是动态插入my-panel块。这可以通过不同的方式实现,最简单的方法是使用compose函数:

Red [ 
    needs: 'view
]

my-panel: [
    panel 300x300 [
        text "World"
    ]
]

view compose [
    title "Hello"

    (my-panel)
]

我们在Gitter上有几个chat rooms,以防您需要更多互动帮助。

干杯!