У меня есть следующая программа.
module C
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def test_for
class_eval <<-DEFINECLASSMETHODS
def self.my_method(param_a)
puts "SELF is: #{self.inspect}"
puts param_a
puts "#{param_a}"
end
DEFINECLASSMETHODS
end
end
end
class A
include C
end
class B < A
test_for
end
когда я запускаю B.new.my_method("aaa")
, я получаю эту ошибку
NameError: undefined local variable or method `param_a' for B:Class
Я совершенно сбит с толку.
Я определяю param_a как локальную переменную в методе класса my_method,
puts param_a
работает нормально и выдаст «ааа».
однако,
puts "#{param_a}"
вывести эту ошибку.
почему
Может кто-нибудь объяснить это?