ruby'de bir nesnenin türünü belirlemek
Arıyorum ne bir örnek (eğer python biliyor musun diye psuedocode olarak düşünebilirsiniz) olarak python kullanacağım:
>>> a = 1
>>> type(a)
<type 'int'>
Ruby yapabileceğimi biliyorum :
1.9.3p194 :002 > 1.class
=> Fixnum
Ama bu doğru yolu nesne türünü belirlemek için.
CEVAP
Belirlemek için uygun şekilde "tip" Ruby dünyanın titrek bir terim olan bir nesne, arama object.class
.
Beri sınıfları aktarmak için diğer sınıfları, eğer istediğiniz olup olmadığını belirlemek için bir nesnedir "tip" diye çağrı object.is_a?(ClassName)
görmek object
tipi ClassName
veya türevi.
Normalde bir tür denetleme Ruby yapılır, ancak bunun yerine, nesneleri belirli yöntemler karşılık yeteneklerine göre değerlendirilir, yaygın olarak adlandırılan "Duck typing". Eğer istediğiniz yöntemleri için yanıt verirse, diğer bir deyişle, bu tür hakkında belirli olması için bir sebep yok.
Örnek çok katı olduğu için. object.respond_to?(:to_s)
yayarlar veya bir dize dönüştürülebilir herhangi bir nesne kullanımına izin vermesi gibi daha iyi olurdu.