2010-08-06 109 views

回答

103

它幾乎完全一樣。您可以使用Objectinstance_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 
+1

N.B.據我所知,如果'self'是參數的子類的一個實例,則返回false。 – 2010-08-06 14:46:47

4

我已成功使用klass,它返回類對象。這似乎是Rails特定的。

示例用法:

class Foo 
end 

Foo.new.klass 
# => Foo 

Foo.new.klass == Foo 
# => true 

Foo.new.klass == "Foo" 
# => false 

還有,完成此一方法:Object.is_a?,它接受類對象作爲參數,並且如果self是類的一個實例或子類的實例,則返回true 。

+3

有一個方法'對象#類':http://apidock.com/ruby/Object/class – 2010-08-06 15:24:33

+0

我希望我可以選擇兩個正確的答案。數組沒有klass作爲方法,但它確實有instance_of,但active_record abjects確實有.klass,我想。 – NullVoxPopuli 2010-08-06 16:49:22

+0

'Array.class'應該也可以。我在我的答案中混淆了,因爲我正在使用的庫擴展類'Object'的方法'class'。 – 2010-08-06 17:03:13

7

kind_of?is_a?是同義詞。他們是Ruby的等同於Java的instanceof

instance_of?是不同的,它只返回true如果對象是一個確切的類,而不是一個子類的實例。

相關問題