2011-10-07 66 views
3

有没有办法做到这一点? 代替:Ruby:隐式块迭代器

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

使迭代器(之间| |)隐象这样:

links.each do 
    color "red" 
end 
+1

我怀疑这可能! – Zabba

回答

3

我敢肯定,这是不可能的。但是,您可以instance_eval每一个元素,但我肯定不会推荐它没有很好的理由

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

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

-1表示使用'instance_eval',+1表示粗体警告。净零。但是,然后+1的想法。 :) – Zabba

3

我不知道这是一个值得在这种情况下的努力(而且增加了不必要的复杂性),但它很高兴要知道你可以做如下的事情:

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