在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