是否可以在另一个对象的上下文中执行proc?

我知道通常你会做proc.调用(foo),然后块应该定义一个参数.我想知道是否可以让"self"绑定到foo,这样就不需要块参数了.

proc = Proc.new { self.hello }

class Foo
  def hello
    puts "Hello!"
  end
end

foo = Foo.new

# How can proc be executed within the context of foo
# such that it outputs the string "Hello"?

proc.call

推荐答案

foo.instance_eval &proc

instance_eval可以接受一个块而不是字符串,&操作符将proc转换为一个块,用于方法调用.

Ruby相关问答推荐

带有虾Ruby 的动态标题

如何在 Ruby 中正确编写代码?以便它产生正确的输出?

Ruby 3 从多个预定纤程中收集结果

在一组字符串中找到最长的公共起始子字符串

使用 Ruby 将文件从一个目录复制到另一个目录

如何判断 Ruby 数组是否包含多个值之一?

符号到字符串问题

将 Ruby 哈希转换为 YAML

如何设置方法测试中使用的私有实例变量?

很好地格式化输出到控制台,指定选项卡的数量

如何在 Rails 3 迁移中描述枚举列?

使用 RSpec 测试哈希内容

如何重命名 gemset?

如何在 Ruby 中找到字符串中字符的索引?

要散列的散列数组

如何从字符串创建 Ruby 日期对象?

Ruby:如何计算一个字符串在另一个字符串中出现的次数?

如何使用 minitest 运行所有测试?

如何编写启动 tmux 会话的 shell 脚本,然后运行 ​​ruby​​ 脚本

Docker for Mac - mkmf.rb 找不到 ruby​​ 的头文件