2

刚从 Red 开始,我很难理解如何评估块。以下给了我一个*** Script Error: panel has no value错误:

Red [ 
    needs: 'view
]

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

view [
    title "Hello"

    do my-panel
]

如果我内联块的内容,我可以让它工作my-panel,但找不到一种方法来拆分代码然后将它包含在视图函数的块中。谁能给我一个真正快速的指针,指出上述代码有什么问题?

4

1 回答 1

4

红色语言包含几个 DSL,你在上面view调用后使用的一个是VID。这个do词在不同的语境中有不同的含义。在 Red 常规语言中,它评估一个 Red Code 块,在 VID 中,它是一个关键字,允许将 Red 代码嵌入到 VID 中。到目前为止一切顺利,但您不是将一块 Red 代码传递给do,而是传递一段 VID 代码。

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

Red [ 
    needs: 'view
]

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

view compose [
    title "Hello"

    (my-panel)
]

如果您需要更具互动性的帮助,我们在 Gitter 上有几个聊天室。

干杯!

于 2017-07-19T13:07:14.227 回答