私が意味する、私はそのような、なぜ私はハッシュを定義する必要がありますが、変数を定義する必要はありませんか?
my_var = new variable
か何かを宣言しないでください。 私はちょうど同様に
my_var = 1;
で行く、なぜ私は私が事前に定義する必要があるだけで
books["War and peace"] = :masterpiece
できないのはなぜ?
books = {}
私が意味する、私はそのような、なぜ私はハッシュを定義する必要がありますが、変数を定義する必要はありませんか?
my_var = new variable
か何かを宣言しないでください。 私はちょうど同様に
my_var = 1;
で行く、なぜ私は私が事前に定義する必要があるだけで
books["War and peace"] = :masterpiece
できないのはなぜ?
books = {}
はこう:
my_var = 1
をローカル変数を定義して割り当てることです。 "War and peace"
とその引数として:masterpiece
でbooks
に[]=
メソッドを呼び出しbooks["War and peace"] = :masterpiece
books = { 'War and Peace' => :masterpiece }
:ハッシュで、それはこのように行うことができます。 books
が存在しない場合は、メソッドを呼び出すことはできません。
それとも別の方法を疑問にアプローチする:ルビーは自動的に変数を初期化するために、いくつかの魔法をしました場合は、それらに[]=
を使用する場合、どのようにbooks
は、上記の例では、ハッシュにしたいことを知っているルビーでしょうか?どのクラスも、文字列をインデックスとして受け入れる[]
と[]=
の演算子を持つことができます。
だから、「1」は数字のリテラルで、{'War and Peace' =>:masterpiece} 'はハッシュリテラルです。したがって、ここの両方の文は、 'name =" John "'と 'list = [1,2,3,4]'と全く同じ形式をしています。 'x = Set.new([1,2,3,4])'のような組み込みのリテラル構文がないオブジェクト型を作成する必要がある場合にのみ、より複雑になります。 –