각 고유 클래스는 인스턴스가 하나뿐이기 때문에 고유 클래스의 인스턴스를 얻는 방법을 찾고 있습니다.Ruby - 고유 클래스의 인스턴스를 가져 오는 방법이 있습니까?
ObjectSpace를 통해 각 고유 클래스를 테스트 할 수는 있지만 값이 비싸다고 생각합니다. 나는의 인스턴스 (들)을 얻을 수있는 Class#instance
또는 Class#instances
방법이 있었으면 좋겠어
class A; end
class B < A; end
AA = class << A; self; end
p A.is_a? AA #=> true
p B.is_a? AA #=> true!!!!
을 : is_a?
이 충분하지 않기 때문에
호기심, 나는 경기를 테스트하기 위해 각 개체의 eigenclass을 받아야합니다 클래스 (또는 고유 클래스).
p AA #=> #<Class:A>
instance = Object.const_get(AA.inspect.match(/^#<Class:(\w+)>$/)[1])
p instance #=> A
# (this works for class' eigenclass)
내 사용 사례가 나는의 클래스를 취득 할 필요가있는 것입니다 :
가장 직접적인 방법은 내가 의지 할 수있는 경우 eigenclass 'inspect
,하지만 내가 궁금하네요에서 인스턴스를 추출하는 것 클래스 메소드,하지만 Method#owner
이 날은 eigenclass 제공하고, Method#receiver
나에게 현재 수신기 제공합니다
# Continuing previous example
def A.f; end
mtd = B.method(:f)
p mtd.owner #=> #<Class:A>
p mtd.receiver #=> B
# I want to obtain A
어떤 아이디어? 당신이 어떤 주어진 클래스의 인스턴스를 찾으려면
방법'singletonclass'은 무엇입니까? – sawa
@sawa, ['Object # singleton_class' 메소드 문서] (http://www.ruby-doc.org/core-1.9.3/Object.html#method-i-singleton_class)를 참조하십시오. –
좋습니다. 나는 그러한 방법이 존재한다는 것을 몰랐다. 이제 사용할 수 있습니다. – sawa