2011-08-01 22 views

答えて

7

はこう:

my_var = 1 

をローカル変数を定義して割り当てることです。 "War and peace"とその引数として:masterpiecebooks[]=メソッドを呼び出しbooks["War and peace"] = :masterpiece

books = { 'War and Peace' => :masterpiece } 
+0

だから、「1」は数字のリテラルで、{'War and Peace' =>:masterpiece} 'はハッシュリテラルです。したがって、ここの両方の文は、 'name =" John "'と 'list = [1,2,3,4]'と全く同じ形式をしています。 'x = Set.new([1,2,3,4])'のような組み込みのリテラル構文がないオブジェクト型を作成する必要がある場合にのみ、より複雑になります。 –

8

:ハッシュで、それはこのように行うことができます。 booksが存在しない場合は、メソッドを呼び出すことはできません。

それとも別の方法を疑問にアプローチする:ルビーは自動的に変数を初期化するために、いくつかの魔法をしました場合は、それらに[]=を使用する場合、どのようにbooksは、上記の例では、ハッシュにしたいことを知っているルビーでしょうか?どのクラスも、文字列をインデックスとして受け入れる[][]=の演算子を持つことができます。