Dynamic 如何编译包含一些动态代码的脚本?

Dynamic 如何编译包含一些动态代码的脚本?,dynamic,compilation,interpreter,jit,red,Dynamic,Compilation,Interpreter,Jit,Red,我想编译这个脚本: Red [File: %b.red] context [ a: 123 hidden: 999 set 'global-exports context [ export-a: a ] ] probe global-exports 但我在尝试使用$/red-13oct19-a4ee537c-rb.red编译它时出错: *** Red Compiler Internal Error: Script Error : Invalid

我想编译这个脚本:

Red [File: %b.red]
context [
    a: 123
    hidden: 999
    set 'global-exports context [
        export-a: a
    ]
]
probe global-exports
但我在尝试使用
$/red-13oct19-a4ee537c-rb.red编译它时出错:

*** Red Compiler Internal Error: Script Error : Invalid path value: global-exports 
*** Where: register-object 
*** Near:  [objects/context/global-exports: make object! [
a: none
hidden: none
]] 

通常,您可以使用
do[…]
函数包装动态代码,该函数将代码块视为数据,并使用解释器在运行时启动它:

Red [File: %b.red]
context [
    a: 123
    hidden: 999
    do [   ;-- the code inside is run by interpreter at runtime
        set 'global-exports context [
            export-a: a
        ]
    ]
]
probe get 'global-exports   ;-- dynamic retrieval
您还必须动态地检索值,除非您在前面的某个地方静态地初始化它(例如,
全局导出:none

在这种特殊情况下,还可以与
生成对象交换
上下文
已足够:

Red [File: %b.red]
context [
    a: 123
    hidden: 999
    set 'global-exports make object! [
        export-a: a
    ]
]
probe global-exports
编译动态代码,这是计划在未来,但不是在红色版本1.0之前

(感谢@9214和@hiiamboris的创意)