Ruby:隐式块迭代器

时间:2011-10-07 18:16:30

标签: ruby iterator block

有办法做到这一点吗? 而不是:

links.each do |link|
  link.color "red"
end

使迭代器(在| |之间)隐式如下:

links.each do
  color "red"
end

2 个答案:

答案 0 :(得分:3)

我很确定这是不可能的。但是你可以instance_eval每个元素,但是我当然不会在没有充分理由的情况下推荐它

foo = ["test","test2","foo","bar","foobar"]

foo.each do |f|
  f.instance_eval do
    p reverse
  end
end

答案 1 :(得分:3)

我不确定在这种情况下这是值得的(并且它增加了不必要的复杂性)但是很高兴知道你可以做类似以下的事情:

proc = Proc.new { |i| i.color 'red' }
links.map(&proc)