第3章追加(写経)

irb(main):001:0> my_var = "Success"
=> "Success"
irb(main):002:0> MyClass = Class.new do
irb(main):003:1*   puts "#{my_var} in Class Define!"
irb(main):004:1>   define_method :my_method do
irb(main):005:2*     puts "#{my_var} in Method Define!"
irb(main):006:2>   end
irb(main):007:1> end
Success in Class Define!
=> MyClass
irb(main):008:0> obj = MyClass.new
=> #<MyClass:0x2dfcf80>
irb(main):009:0> obj.my_method
Success in Method Define!
=> nil
irb(main):010:0>

irb(main):014:0* class MyClass
irb(main):015:1>   def initialize
irb(main):016:2>     @v = 1
irb(main):017:2>   end
irb(main):018:1> end
=> nil
irb(main):019:0> obj = MyClass.new
=> #<MyClass:0x2e0b670 @v=1>
irb(main):020:0> obj.instance_eval do
irb(main):021:1*   self
irb(main):022:1>   @v
irb(main):023:1> end
=> 1
irb(main):024:0> v = 2
=> 2
irb(main):025:0> obj.instance_eval { @v = v }
=> 2
irb(main):026:0> obj.instance_eval { @v }
=> 2
irb(main):027:0> v = 10
=> 10
irb(main):028:0> obj.instance_eval { v }
=> 10
irb(main):029:0>

irb(main):030:0* inc = Proc.new {|x| x + 1}
=> #<Proc:0x2e28e28@(irb):30>
irb(main):031:0> inc.call(10)
=> 11
irb(main):032:0>
irb(main):033:0* dec = lambda {|x| x - 1}
=> #<Proc:0x2e34b74@(irb):33 (lambda)>
irb(main):034:0> dec.call(10)
=> 9
irb(main):035:0> inc.class
=> Proc
irb(main):036:0>
irb(main):037:0* dec.class
=> Proc