2011-10-07 51 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)