Есть ли способ сделать это? вместо:
links.each do |link|
link.color "red"
end
сделать итератор (между | |) неявным, например:
links.each do
color "red"
end
Есть ли способ сделать это? вместо:
links.each do |link|
link.color "red"
end
сделать итератор (между | |) неявным, например:
links.each do
color "red"
end
Я почти уверен, что это невозможно. Однако вы можете instance_eval каждый элемент, но без веской на то причины я бы его точно не рекомендовал
foo = ["test","test2","foo","bar","foobar"]
foo.each do |f|
f.instance_eval do
p reverse
end
end
instance_eval
, +1 за смелое предупреждение. Чистый ноль. Но тогда +1 за идею. :)
- person Zabba; 07.10.2011
Я не уверен, что в данном случае это стоит усилий (и это добавляет ненужную сложность), но приятно знать, что вы можете сделать что-то вроде следующего:
proc = Proc.new { |i| i.color 'red' }
links.map(&proc)