5
6

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 5 years have passed since last update.

Rubyのハッシュ記法は混ぜて書ける

Last updated at Posted at 2014-12-29

Ruby 1.9 以降だと,キーがシンボルであるハッシュリテラルは

{foo: 3, bar: 4} #=> {:foo=>3, :bar=>4}

という書き方ができるよね。

ラベルに数字とかスペースとかどーよ?

でも,この記法は,〈識別子に使えない形式〉のラベルを認めていない。

{foo: 3, bar: 4, 3D: 5} #=> syntax error

アンダースコア _ 以外の記号や数字などで始まっていたり,スペースを含むようなラベルは使えないんだよね。

じゃあ上の例で,3D が入ってくることによって,全体を

{:foo=>3, :bar=>4, :"3D"=>5}

と書き替えなければならないかというと,そうでもなく,記法を混ぜることができるので,

{foo: 3, bar: 4, :"3D" => 5} #=> {:foo=>3, :bar=>4, :"3D"=>5}

のような書き方ができる。(気持ち悪いという人もいるだろうけどな)

Ruby 2.2 では

Ruby 2.2 で,ハッシュリテラルの記法が少し拡張された。

こんなふうに書けるゾ!

{foo: 3, bar: 4, "3D": 5}

つまり,ダブルクオートで囲ってさえやれば,コロン記法でいけるってこと。

漢字とか?

ちなみに,変数名やメソッド名などと同じく,ハッシュリテラルのラベルにも漢字とか仮名とかが使える。

{: 3, : 4} #=> {:朝=>3, :暮=>4}
5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?