0
루비 클래스에서는 주어진 모듈을 포함 할 때 변수 값을 저장하고 싶습니다. 나는이에게 방법 (attr_accessor, set_constant, 등)하지만 최종 결과는 항상 동일 임의의 수를 시도했습니다루비 : 포함 시간에 값 저장
module M
def self.included(base)
base.class_eval do
@@inclusion_time = Time.now
def included_at
@@inclusion_time
end
end
end
end
class A
include M
end
sleep 3
class B
include M
end
sleep 3
class C
include M
end
a = A.new
b = B.new
c = C.new
puts a.included_at
puts b.included_at
puts c.included_at
: 다음은 인위적인 예입니다. 모든 클래스에는 마지막으로 설정된 값이 있습니다.
어떻게 해결할 수 있습니까?
내가 당신과 SO의 모듈 M을 교체 할 때,'A.new.included_at'는, (물론, B 및 C에 대한 동일) 전무를 반환 klass.instance_variable_set 데프 self.included (KLASS)'반면 (@ inclusion_time, Time.now) end'는 원하는 결과를 제공합니다. 'self.included'에서 self는 M과 같습니다. –