确定ruby中对象的类型

我将使用python作为我正在寻找的示例(如果不了解python,可以将其视为伪代码):

&gt&燃气轮机&燃气轮机;a=1
&燃气轮机&燃气轮机&燃气轮机;类型(a)
<键入“int”>

我知道在ruby中我可以做到:

1.9.3p194:002>一级
=>菲克努姆

但这是确定对象类型的正确方法吗

确定对象“类型”的正确方法是调用object.class,这在Ruby世界中是一个不稳定的术语

由于类可以从其他类继承,如果要确定某个对象是否为“特定类型”,可以调用对象。is_a?(ClassName)以查看对象是否为或从其派生

通常,类型检查不是在Ruby中完成的,而是根据对象对特定方法的响应能力来评估对象,通常称为“Duck类型”。换句话说,如果它响应您想要的方法,那么就没有理由特别关注类型

例如,object.is_a?(String)过于严格,因为另一个类可能实现将其转换为字符串的方法,或者使其行为与字符串的行为相同对象。响应?(:to)将是一种更好的方法来测试所讨论的对象是否符合您的要求

发表评论