t;>#sing>
# class_eva l
class_eva l 会把 self 和 default definee 都修改为class_eva l 的接受者
class Persion;end
Persion.class_eva l do
p self => Persion
def hello; end
end
Persion.new.method(:hello) => #<Method: Persion#hello>
Persion.instance_method(:hello) => #<UnboundMethod: Persion#hello>
明白了以上几点,那么下面这个例子就很好理解了:
Persion.instance_eva l { define_method(:hello) { "hello" } }
Persion.class_eva l { define_method(:sing) { "sing" } }
Persion.instance_eva l { def speak; 'speak'; end }
Persion.class_eva l { def dance; 'dance'; end }
p Persion.new.hello => "hello"
p Persion.new.sing => "sing"
p Persion.speak. => "speak"
p Persion.new.dance => "dance"
|