Ruby:从 block 中产生 block ?

标签 ruby lambda

lambdaprocmethod 或 ruby​​ 中的其他类型的 block 是否有可能产生另一个 block ?
像...

a = lambda {
  puts 'in a'
  yield if block_given?
}

a.call { puts "in a's block" }

这不起作用......它只是产生

in a
=> nil

有没有办法让 block 调用 block ?

最佳答案

我不确定你是否可以做到这一点,但类似的事情是:

在 Ruby 1.8.6 中:

a = lambda { |my_proc|
  puts 'in a'
  my_proc.call
}

a.call(lambda { puts "in a's block" })

在 Ruby 1.9.1 中,你可以有 block 参数

a = lambda { |&block|
  puts 'in a'
  block.call
}

a.call { puts "in a's block" }

关于Ruby:从 block 中产生 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602089/

相关文章:

ruby - 使用变量构造格式字符串

python按自定义顺序排序字典列表

lambda - 方案:β 降低挑战

c++ - 具有在编译时确定的参数数量的 Lambda 函数

Pandas 将切割中的列添加到 DataFrame

ruby-on-rails - ruby rails : Alert button on submit press

ruby - 在 Ruby 中创建和访问 Postgres(没有 Rails)

ruby - 通过 capistrano 将 Rails 应用程序部署到 bluehost 时出现参数错误

ruby-on-rails - 使用 Barby gem 打印 - 条码图像模糊

c++ - 如何从通用 lambda 中的可变参数包中获取类型?