Rebol:找到一种动态自动生成和执行代码的方法,有更好的方法吗?

StackOverflow https://stackoverflow.com/questions/1437110

  •  08-07-2019
  •  | 
  •  

我已经尝试过这个:

>> code-block: copy []
== []
>> append code-block [func[][print "a"] ]
== [func [] [print "a"]]
>> do do code-block
a
>>

有没有办法避免做“做”。两次:)

有帮助吗?

解决方案

你在代码块中添加的不是函数,而是函数的来源,因此需要执行一次才能生成函数,然后再次它作为一个功能。

你可以这样看:

length? code-block
== 3

要将该功能置于代码块中,可以执行以下操作:

code-block: copy []
append code-block func[][print "a"]    ;; no block around the FUNC

或者这个:

code-block: copy []
append code-block reduce [func[][print "a"] ]  ;; use REDUCE to evaluate the block

无论哪种方式,代码块中的内容现在只是函数:

length? code-block
== 1
type? first code-block
== function!
do code-block     ;; what you asked for!
a
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top