themirror
themirror

Reputation: 10287

Ruby: implicit block iterator

Is there a way to do this? instead of:

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

make the iterator (between | |) implicit like so:

links.each do
  color "red"
end

Upvotes: 3

Views: 291

Answers (2)

jodell
jodell

Reputation: 1047

I'm not sure this is worth the effort in this instance (and it adds unnecessary complexity) but it's nice to know that you can do something like the following:

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

Upvotes: 3

Gazler
Gazler

Reputation: 84140

I am pretty sure that this is not possible. You can however instance_eval each element, but I certainly wouldn't recommend it without good reason

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

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

Upvotes: 3

Related Questions