ruby - 将参数传递给 Ruby 中的传入 block

标签 ruby

我想将一个 block 传递给一个函数,然后使用一些附加参数调用该 block ,如下所示:

def foo(&block)
  some_array = (1..3).to_a
  x = 7 # Simplified
  result = some_array.map &block # Need some way to pass in 'x' here
end

def a_usage_that_works
  foo do |value|
    value
  end
end

def a_usage_that_doesnt_work
  foo do |value, x|
    x # How do I pass in x?
  end
end

# rspec to demonstrate problem / required result
describe "spike" do
  it "works" do
    a_usage_that_works.should == [1,2,3]
  end
  it "doesn't work" do
    a_usage_that_doesnt_work.should == [7, 7, 7]
  end
end

如何将附加参数传递给 block ?

最佳答案

创建另一个 block 并从中调用第一个。

def foo(&block)
  some_array = (1..3).to_a
  x = 7 # Simplified
  result = some_array.map {|elem| block.call(elem, x)}
end

关于ruby - 将参数传递给 Ruby 中的传入 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360446/

相关文章:

ruby - 如何在 VIM 中导航 Ruby 方法?

ruby-on-rails - 如何在创建方面运算符的数组上查找 id

ruby-on-rails - ruby 和 gem rdiscount windows 8 64 位的安装问题

ruby-on-rails - 如何在不需要前缀的情况下为 Vanity URL 设置 Rails routes.rb

ruby - 在 selenium webdriver ruby​​ 中解析 Pdf 时出错

Ruby 的带有 block 变量插值的发送方法

ruby - 为 Sharetribe 配置 SMTP

ruby-on-rails - DatabaseCleaner 引发 NoMethodError : undefined method `rollback' for nil:NilClass

ruby - 无法加载此类文件 -- rack/handler/puma

ruby-on-rails - database.yml &references 不工作