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的创意)