Ruby:隐式块迭代器

3
有没有一种方法可以做到这一点? 而不是:
links.each do |link|
  link.color "red"
end

使迭代器(在 | | 之间)隐式化,方法如下:
links.each do
  color "red"
end
2个回答

3
我很确定这是不可能的。但你可以用instance_eval来处理每个元素,但如果没有充分的理由,我肯定不会推荐这样做。
foo = ["test","test2","foo","bar","foobar"]

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

-1 使用 instance_eval,+1 对于粗体警告。净值为零。但是+1对于这个想法。 :) - Zabba

3

我不确定在这种情况下是否值得这样做(这会增加不必要的复杂性),但知道你可以像以下这样做还是很不错的:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接