0

如果不是,这在 R3 中是否可行?

4

1 回答 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 回答