PerlerのRuby日記

Rubyとか

ハッシュのシンボル

1.9からハッシュの生成に簡易な書き方ができるようになった。

{key:"value"}
# => {:key=>"value"}

JSっぽい。

ただ言語仕様上、値がシンボルの時は空けざるを得ないので、空ける。

「::」になるとクラスの空間セパレータになってしまうから。

{ key: :value }
# => {:key=>:value}

こうなるんだけど、これを見ると一瞬「ん?」となってしまう。

スペースを挟んでのコロンが「なんかsyntax間違ってんじゃねーの?」っぽく見える。


まとめ

コーディング規約としては、最初からキーと値を空けるようにしておくのが無難かな。


ちなみに

もしかすると{}の中なら「::」はキーと値の両方シンボルと見てくれるかと思ってやってみたけど、ならなかった。

2.0.0p247 :001 > {a::b}
SyntaxError: (irb):1: syntax error, unexpected '}', expecting =>
	from /Users/rightgo09/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>'

あと

{ :key => "value" }

が一番見やすいと思う。

自分の中で、ハッシュって感じがする。

「=>」を使ってPerlっぽいからかもしれない。

GithubのRuby Styleguideもこれみたいだし。