ruby - 在 Block (self) Ruby 中获取 Block 的名称

标签 ruby block self proc

我想知道如何在 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/

相关文章:

ruby-on-rails - self 在 Rails 模型中的值(value)是什么?为什么没有明显的实例方法可用?

ruby-on-rails - 是否可以否定 Rails 中的作用域?

ruby - 更新 gem 时 Docker 包安装缓存问题

javascript - Ruby View 访问 angular.js 变量

ruby - 不可变与符号只能有一个实例之间有什么区别?

interface - JRuby:带有 Ruby block 的 Java 命令模式:为什么它有效?

css - 父级中的空 div 应显示相同

c++ - NDK '^' token 之前的预期不合格 ID

python - 使用 exec 生成函数以将小部件放置在 pyqt 中无法识别自身

self - "Pure"原型(prototype)语言