迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Ruby 中的 Kind_of、Instance_of 和 Is_a

作者:迹忆客 最近更新:2023/03/21 浏览次数:

在 Ruby 中,我们可能需要不时检查对象类型。有几种方法可以做到这一点,包括 is_akind_ofinstance_of

使用 is_a 检查 Ruby 中的对象类型

让我们从创建我们的类开始:

class Animal; end

dog = Animal.new

我们可以使用 is a? 确定 dog 的类型:

dog.is_a?(String)
=> false

dog.is_a?(Animal)
=> true

Dog 不是字符串。它是 Animal 类的对象。

is_a? 方法很有趣,因为它检查对象的当前类及其祖先。

如果对象的祖先包含与参数匹配的任何类,它将返回 true

class Mammal < Animal; end

whale = Mammal.new

鲸鱼是哺乳动物,也是自然界中的动物。在 Ruby 中是什么样的?

Ruby 出色地执行了必要的检查:

whale.is_a?(Mammal)
=> true

whale.is_a?(Animal)
=> true

让我们来看看鲸鱼的祖先:

whale.class.ancestors

输出:

=> [Mammal, Animal, Object, Kernel, BasicObject]

因为返回的数组中存在 Animal,所以 whale.is a?(Animal) 也是 true

在 Ruby 中使用 kind_of? 检查对象的类型

is_a?kind of? 的别名。

dophin = Mammal.new

dophin.kind_of?(Animal)
=> true
dophin.kind_of?(Mammal)
=> true

在 Ruby 中使用 instance_of? 检查对象的类型

is a? 不同,instance of? 不检查对象的祖先。如果一个对象是给定类的一个实例,它返回 true;否则,它返回 false

cat = Mammal.new

cat.instance_of?(Mammal)
=> true

cat.instance_of?(Animal)
=> false

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

用 Ruby 解析 XML

发布时间:2023/03/21 浏览次数:112 分类:编程语言

本文展示了如何在 Ruby 中使用 gem nokogiri 解析 XML 文件。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便