如果不是,这在 R3 中是否可行?
问问题
124 次
1 回答
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
于 2009-10-18T20:04:06.913 回答