2012-01-06 80 views
0

是否可以清楚地標識一類變量?找出哈希和數組之間的變量類別和區別

類似:

@users.who_r_u? #=>Class (some information) 

@packs.who_r_u? #=> Array (some information) 

有人可以提供類,散列,數組,與之關聯的數組等之間的差異清晰簡短的說明?

+0

還是要找到他們之間的差異清晰簡單的解釋。 thanx – antsav 2012-01-06 12:56:21

+0

哈希和關聯數組是相同的東西。類是包含一組方法的對象類型。哈希的類是哈希和數組是數組。 – 2012-01-06 13:16:27

回答

6

您可以使用:

@users.class 

測試它在IRB:

1.9.3p0 :001 > 1.class 
=> Fixnum 
1.9.3p0 :002 > "1".class 
=> String 
1.9.3p0 :003 > [1].class 
=> Array 
1.9.3p0 :004 > {:a => 1}.class 
=> Hash 
1.9.3p0 :005 > (1..10).class 
=> Range 

或者:

1.9.3p0 :010 > class User 
1.9.3p0 :011?> end 
=> nil 
1.9.3p0 :012 > @user = User.new 
=> #<User:0x0000010111bfc8> 
1.9.3p0 :013 > @user.class 
=> User 

這些只是快速IRB的例子,希望這足以看出使用紅寶石中的.class。

+0

這正是我想要的!非常感謝你! – antsav 2012-01-06 18:12:55

2

您也可以使用kind_of?來測試它的接收器是類,數組還是其他任何東西。

@users.kind_of?(Array) # => true 
0

ClassHash之間的區別?他們太不同,甚至沒有提供正常答案。 Hash基本上是一個具有唯一鍵的數組,每個鍵都有其相關的值。這就是爲什麼它也被稱爲關聯數組。

下面是一些解釋:

array = [1,2,3,4] 
array[0] # => 1 
array[-1] # => 4 
array[0..2] # => [1,2,3] 
array.size # => 4 

簽出更多的Array方法在這裏:http://ruby-doc.org/core-1.9.3/Array.html

hash = {:foo => 1, :bar => 34, :baz => 22} 
hash[:foo] # => 1 
hash[:bar] # => 34 
hash.keys # => [:baz,:foo,:bar] 
hash.values # => [34,22,1] 
hash.merge :foo => 3921 
hash # => {:bar => 34,:foo => 3921,:baz => 22 } 

Hash從來沒有讓你添加到它的elments的順序,它只是保留了獨特的鍵,所以你可以很容易地檢索價值。

但是,如果你這樣做:

hash.merge "foo" => 12 

你會得到

hash # => {:bar => 34, baz => 22, "foo" => 12, :foo => 2} 

它創造新的鍵值對,因爲:foo.eql? "foo"回報false

更多Hash方法,看看這個:http://www.ruby-doc.org/core-1.9.3/Hash.html

Class對象是有點太複雜總之解釋,但如果你想了解更多相關信息,reffer一些在線教程。

請記住,API是你的朋友。

+0

非常感謝你!很好的解釋!我肯定會閱讀你所建議的資源 – antsav 2012-01-06 18:12:14

+1

Ruby * does *有關聯數組又稱爲映射aka字典,但由於一些奇怪的原因,他們被稱爲'Hash'。 – 2012-01-08 03:21:40

+0

歡迎你。 @JörgWMittag我已經更新了我的帖子,謝謝。 – shime 2012-01-08 13:43:47

0

發現的有用:<%= debug @users %>

相關問題