1
我正在閱讀Ruby中的Metaprogramming。在這本書中,當我讀到scopegates,下面的代碼被證明Ruby中的ScopeGates
my_var = "Success"
MyClass = Class.new do
puts "#{my_var} in the class definition"
define_method :my_method do
puts "#{my_var} in the method"
end
end
MyClass.new.my_method
=>Success in the class definition
Success in the method
現在,當我中的以下執行,我得到一個錯誤說未定義的方法my_method MyClass.new MyClass的:0x00000100936a30
MyClass.my_method
NoMethodError: undefined method `my_method' for MyClass:Class
from (irb):11
from /usr/local/bin/irb:12:in `<main>'
爲什麼my_method被創建,它被調用爲MyClass.new.my_method而不是MyClass.my_method?
感謝您的回答:) – felix 2010-08-11 07:15:37
但現在您遇到了'class << self'不是範圍門的問題;)(這對讀者來說是一個很好的練習) – thorncp 2010-08-11 19:40:52