metaprogramming/instance_exec/instance_exec.rb
tests/_examples/metaprogramming/instance_exec/instance_exec.rb in the metorex repository.
# instance_exec example
class Box
def initialize(val)
@value = val
end
def value
@value
end
def transform(&blk)
instance_exec(&blk)
end
def doubled
instance_exec do
@value * 2
end
end
end
b = Box.new 5
puts b.doubled
b2 = Box.new 10
puts b2.doubled
puts b.transform { @value + 100 }
Output:
10
20
105