2009-10-18 42 views

回答

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

+0

嗨,尚達表示感謝,但是仍然應該可以將它與一般情況下的自我引用相提並論嗎? – 2009-10-18 21:02:34

+0

或者應該有一個系統變量,它應該存儲像system/options/script這樣的上下文信息。 – 2009-10-18 21:08:00

+0

不幸的是,'自我意味着事物本身,而不是它分配給它的任何單詞的名稱。這個「訣竅」不適用於對象/上下文:probe o1:context [o1-name:get in disarm try [0/0]'where o1-self:self] – Sunanda 2009-10-18 21:30:09

相關問題