2012-01-06 9 views
0

変数のクラスを明確に識別することは可能ですか?ハッシュと配列の間の変数クラスと相違点を見つける

のようなもの:

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

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

など

誰かがクラス、ハッシュ、配列、連想配列、などの違いを明確に短い説明を提供することができますか?

を使用でき
+0

はまだそれらすべての違いを明確に簡単な説明を見つけたいです。 thanx – antsav

+0

ハッシュと連想配列は同じものです。クラスとは、メソッドのコレクションを含むオブジェクトの型です。ハッシュのクラスはハッシュであり、配列は配列です。 –

答えて

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

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 

あなたはそれが:foo.eql? "foo"戻りfalseので、新しいキーと値のペアを作成し

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

を取得します。より多くのHash方法はこれをチェックするために

http://www.ruby-doc.org/core-1.9.3/Hash.html

Classオブジェクトは、短期的に説明するのは少し複雑すぎるが、あなたはそれについての詳細を知りたい場合、いくつかのオンラインチュートリアルへのreffer。

覚えておいてください、APIはあなたの友人です。

+0

ありがとうございます!素晴らしい説明!私は間違いなくあなたから提案されたリソースを読むでしょう – antsav

+1

Ruby *には連想配列がありますが、いくつかの奇妙な理由でハッシュと呼ばれています。 –

+0

大歓迎です。 @JörgWMittag私はそれに応じて、私の投稿を更新しました、ありがとう。 – shime

0

でこれらのメソッドを見つけることができます:<%= debug @users %>

関連する問題