如果不是这样可以在R3中使用吗?
答案 0 :(得分:3)
是和否。
从技术上讲,没有.....函数没有名字,它们是匿名的。可以将相同的功能分配给多个单词,因此实际名称有问题。
do func [][print "hi world"] ;; this function explicitly has no name at all
f1: func [] [print "yo world"] ;; here's a single function with three names
f2: :f1
f3: :f2
在某些情况下实际上是,你可以使用技巧获取当前名称(如果有的话):捕获错误,错误对象包含堆栈中的名称:
f3: func [/local eo] [eo: disarm try [0 / 0 ] print ["name is " eo/where]]
f4: :f3
试一试:
>> f3
name is f3
>> f4
name is f4
这里有一个详尽的讨论: http://www.rebol.org/ml-display-thread.r?m=rmlGLPJ