我已经对此进行了实验:
>> code-block: copy []
== []
>> append code-block [func[][print "a"] ]
== [func [] [print "a"]]
>> do do code-block
a
>>
有没有办法避免做两次“做”:)
我已经对此进行了实验:
>> code-block: copy []
== []
>> append code-block [func[][print "a"] ]
== [func [] [print "a"]]
>> do do code-block
a
>>
有没有办法避免做两次“做”:)
您放入代码块的不是函数,而是函数的来源,因此需要执行一次以创建函数,然后再将其作为函数执行。
你可以看到这样的:
length? code-block
== 3
只需将函数放入code-block,可以这样做:
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