2010-02-03 20 views

Odpowiedz

38

Oprócz sprawdzania klasy Object # (klasa metody instancji na obiekcie aka klasy bazowej), można

s.is_a? Thing 

będzie sprawdzić, czy zawiera Thing nigdzie w jego przodków.

1
ICustomClass.to_clr_type 
53

Albo Object.class lub Object.type powinien robić to, co trzeba. Można również użyć dwóch metod: Object.is_a? i . Jednak nie są one w 100% identyczne. Instrukcja obj.instance_of?(myClass) zwróci true tylko wtedy, gdy obiekt obj został utworzony jako obiekt typu myClass. Zastosowanie wartości obj.is_a?(myClass) zwróci wartość true, jeśli obiekt obj ma klasę myClass, jest klasą odziedziczoną po myClass lub zawiera moduł myClass.

Na przykład:

x = 1 
x.class     => Fixnum 
x.instance_of? Integer => false 
x.instance_of? Numeric => false 
x.instance_of? Fixnum  => true 
x.is_a? Integer   => true 
x.is_a? Numeric   => true 
x.is_a? Fixnum   => true 

Ponieważ metoda C# wymaga bardzo specyficznego typu danych, polecam korzystania Object.instance_of?.

Powiązane problemy