0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【第8章】Railsチュートリアルでハッシュとシンボルについて忘れていたので復習した

Posted at

Railsチュートリアル第8章(第6版)でハッシュとシンボルを忘れていたので、復習した。

#①ハッシュとは
・基本的には配列と同じだが、インデックスとして整数値以外のものを使える。
・キーと値のペアを波カッコで囲んで表記する。
・ハッシュでは要素の並び順が保障されない。
・JavaでいうMapだと思っている。

>> user = {}                          # {}は空のハッシュ
=> {}
>> user["first_name"] = "Pai"     # キーが "first_name" で値が "Pai"
=> "Pai"
>> user["last_name"] = "Abble"        # キーが "last_name" で値が "Abble"
=> "Abble"
>> user["first_name"]                 # 要素へのアクセスは配列の場合と似ている
=> "Pai"

#②省略1
ハッシュの1要素を角カッコを使って定義する代わりに、=>(ハッシュロケット)を使ってリテラル表記する方が簡単。

>> user = { "first_name" => "Pai", "last_name" => "Abble" }
=> {"last_name"=>"Abble", "first_name"=>"Pai"}

#③省略2 -シンボル-
・Railsではハッシュのキーとして、文字列よりもシンボルを使うのが普通。
・シンボルはクォートで囲む代わりにコロンを前に置く。
・文字列と違って全ての文字が使えるわけではない。(一般的なアルファベットを使うかぎりは問題ないらしい)
・Ruby以外ではごく一部の言語にしか採用されていない特殊なデータ形式。

>> "name"                            #文字列
=> "name"
>> :name                             #シンボル
=> :name                             
>> :foo-bar              #使えない文字
NameError: undefined local variable or method `bar' for main:Object
>> :2foo                             #使えない文字
SyntaxError

ハッシュのキーにシンボルを採用する場合のuser

>> user = { :first_name => "Pai", :last_name => "Abble" }
=> {:last_name =>"Abble", :first_name =>"Pai"}

#④省略3
ハッシュではシンボルをキーとして扱うことが一般的なので、Ruby1.9からは新しい記法がサポートされた。
・シンボルとハッシュロケットの組み合わせを、キーの名前の前ではなく後にコロンを置き、その後に値が続くように置き換えることが出来る。

>> user = { first_name: "Pai", last_name: "Abble" }
=> {:last_name =>"Abble", :first_name =>"Pai"}

#⑤まとめ
①~④で忘れていた箇所を思い出せた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?