在Java中,您可以执行instanceof
。有没有Ruby的等价物?如何检查一个变量是否是一个类的实例?
回答
它几乎完全一样。您可以使用Object
的instance_of?
方法:
"a".instance_of? String # => true
"a".instance_of? Object # => false
红宝石也有is_a?
和kind_of?
方法(这2个是别名和工作完全一样),它返回true
是父类的比赛之一:
"a".is_a? String # => true
"a".is_a? Object # => true
我已成功使用klass
,它返回类对象。这似乎是Rails特定的。
示例用法:
class Foo
end
Foo.new.klass
# => Foo
Foo.new.klass == Foo
# => true
Foo.new.klass == "Foo"
# => false
还有,完成此一方法:Object.is_a?
,它接受类对象作为参数,并且如果self
是类的一个实例或子类的实例,则返回true 。
有一个方法'对象#类':http://apidock.com/ruby/Object/class – 2010-08-06 15:24:33
我希望我可以选择两个正确的答案。数组没有klass作为方法,但它确实有instance_of,但active_record abjects确实有.klass,我想。 – NullVoxPopuli 2010-08-06 16:49:22
'Array.class'应该也可以。我在我的答案中混淆了,因为我正在使用的库扩展类'Object'的方法'class'。 – 2010-08-06 17:03:13
看看instance_of?
和kind_of?
方法。这是文档链接http://ruby-doc.org/core/classes/Object.html#M000372
我会尝试is_a?以及。 – 2010-08-06 15:18:39
kind_of?
和is_a?
是同义词。他们是Ruby的等同于Java的instanceof
。
instance_of?
是不同的,它只返回true
如果对象是一个确切的类,而不是一个子类的实例。
- 1. PHP:检查一个变量是否是某个类的实例
- 2. 如何检查是否一个变量是JavaScript的一个blob
- 3. 如何检查一个变量是否是一个整数?
- 4. 如何检查一个变量是否是整数类型
- 5. 检查一个实例变量是否有一个或多个对象?
- 6. 如何检查一个实例是否为枚举类型
- 7. 如何检查一个id是一个实例还是一个类?
- 8. 检查一个类型是否是Haskell中的Show实例?
- 9. 我需要一个类变量还是一个实例变量?
- 10. 如何检查一个Activity的多个实例是否存在
- 11. 如何检查是否一个类实现一个接口
- 12. Python:如何检查一个对象是否是namedtuple的一个实例?
- 13. 检查一个变量是否为空
- 14. 检查一个变量是否为SRE_Match
- 15. 检查一个变量是否是mysqli类型的对象?
- 16. 如何检查一个变量是否是Javascript中的超时?
- 17. 如何检查一个字符串是否是一个对象的实例变量?
- 18. Python:检查一个变量是否是一个字典
- 19. AS3:检查是否一个变量是Object类型
- 20. 如何检查一个文本变量是否包含在另一个变量
- 21. 如何检查元素是否为U的一个实例?
- 22. 如何检查一个变量是否为空并且是一个数字?
- 23. 检查一个变量是否是时间不变的R
- 24. Haskell:如何判断一个类是否是类的一个实例?
- 25. 检查一个类是否已经在iOS中实例化了
- 26. C#:如何检查一个实例是否可序列化
- 27. 如何检查一个对象是否被实例化?
- 28. 如何检查一个实例是否属于登录用户?
- 29. 如何检查另一个Derby实例是否已经启动?
- 30. 什么是变量的一个实例?
N.B.据我所知,如果'self'是参数的子类的一个实例,则返回false。 – 2010-08-06 14:46:47