我想知道如何在 block 中获取 block /过程的名称,然后将其传递给方法。我需要像这样的 block 名称:
method("hello") do
puts "My name is #{self}"
end
当方法运行 block 时,它会打印出类似的东西:
"My name is #<Proc:0xa3de668@/path/to/file.rb:8>"
最佳答案
通过调用 Proc.new
(在方法内部)而不提供 block ,您可以在方法内部获取对隐式传递的 block 的引用。例如:
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!" }
关于ruby - 在 Block (self) Ruby 中获取 Block 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330191/