0
說我有這種紅寶石方法:我可以在Ruby中對一個(簡單)塊進行字符串化嗎?
def get_proc_from_block(&block)
return block
end
現在,如果我有這樣的塊稱之爲:
p = get_proc_from_block(&:length)
...有沒有什麼辦法讓我莫名其妙地檢查p
並獲得字符串"length"
從它?
說我有這種紅寶石方法:我可以在Ruby中對一個(簡單)塊進行字符串化嗎?
def get_proc_from_block(&block)
return block
end
現在,如果我有這樣的塊稱之爲:
p = get_proc_from_block(&:length)
...有沒有什麼辦法讓我莫名其妙地檢查p
並獲得字符串"length"
從它?
以下每個表達式導致相同的常規PROC:
get_proc_from_block(&:length)
:length.to_proc
proc{ |a| a.length }
和Ruby不支持檢查他們的源代碼。如需更詳細的答案,看看這些問題:
首先,除非你的函數是一個類,變量「B」的一部分,將盡快爲您留下銷燬第二,在運行時無法獲得方法的長度,因爲解釋器會將您的代碼轉換爲解釋器可以理解的機器代碼之類的東西。獲取該方法中字符數的唯一方法是解析包含它的源文件。 – 2013-02-28 19:37:15
@IonutHulub:我意識到'b'只能在'store_block'範圍內訪問;我的意思是詢問是否可以在方法中檢查它(我會更新問題來澄清)。但是,由於Ruby的動態性,我對你的第二個要求持懷疑態度。例如,我可以創建一個新的類並在其上定義一個「長度」方法,然後在該類的一個實例上調用該塊,它將起作用。但也許你理解這種方式比我更好(在這種情況下,更深入的答案將非常感謝!)。 – 2013-02-28 19:54:08