雷博尔:发现了一种自动生成和动态执行代码,有没有更好的办法?

我已经尝试了这一点:

>> 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

分类:REBOL 时间:2015-03-15 人气:0
本文关键词: REBOL
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.902 (s). 10 q(s)