我已经尝试过这个:
>> code-block: copy []
== []
>> append code-block [func[][print "a"] ]
== [func [] [print "a"]]
>> do do code-block
a
>>
有没有办法避免两次做“做”:)
答案 0 :(得分:4)
你在代码块中添加的不是函数,而是函数的来源,因此需要执行一次才能生成函数,然后再次它作为一个功能。
你可以这样看:
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