2
我想知道如何獲得一個塊的/ proc的名字,而在塊將被傳遞給方法。我需要一個塊的名稱,像這樣:get塊的名字,而在塊(個體經營)紅寶石
method("hello") do
puts "My name is #{self}"
end
這將打印出的東西時,該方法運行塊,如:
"My name is #<Proc:[email protected]/path/to/file.rb:8>"
我想知道如何獲得一個塊的/ proc的名字,而在塊將被傳遞給方法。我需要一個塊的名稱,像這樣:get塊的名字,而在塊(個體經營)紅寶石
method("hello") do
puts "My name is #{self}"
end
這將打印出的東西時,該方法運行塊,如:
"My name is #<Proc:[email protected]/path/to/file.rb:8>"
無法爲塊做到這一點,但對於特效.. 。
def hello
puts yield
end
my_proc = Proc.new {"I am #{my_proc}"}
method("hello").call(&my_proc)
#I am <#Proc:[email protected]>
你可以通過調用Proc.new
(裏面的方法),而無需提供塊的方法產量-ING它,裏面的隱式傳遞塊的參考。例如:
def speak
puts yield
block = Proc.new # Creates a proc object from the implictly passed block.
puts block.call
end
speak { "Hello, from implicit block!" }
你真的只想在塊的源代碼中的位置?塊(以及一般的Proc)並沒有真正的名字。 –
也許你可以得到一個proc的名字,但是你不能得到一個塊的名字,因爲block不是一個Ruby對象。 – sawa