読者です 読者をやめる 読者になる 読者になる

Rubyのシンボルとは[和訳]

hi, long time not to see you guys:)

Rubyのハッシュってコードの書き方はわかるんだけど、いまいちピンとこない。
stackoverflowで調べてみてなんとなくわかったような気がした回答があったので和訳してみた。

–質問–

patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }

patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094

上記のコードってどういう意味があるんだ?

–回答–
The symbol :ruby does not contain “red” or “programming”.

シンボル:rubyに"red"と"programming"という文字列はもたない。

The symbol :ruby is just the symbol :ruby.

シンボル:rubyはただのシンボル:rubyである。

It is your hashes, patient1 and patient2 that each contain those values, in each case pointed to by the same key.

それは君が作ったハッシュでpatient1とpatient2はそれぞれにバリューを持っている。それぞれの事象であればハッシュは同じキーを示している。

Think about it this way: If you go into the living room on christmas morning, and see two boxes with a tag on them that say “Kezzer” on them.
こう考えてみよう。もしあなたがクリスマスの朝にリビングルームへ行ったとしよう。そこには2つの箱があって、それぞれに"Kezzer"と書かれているタグがついている。

One has socks in it, and the other has coal.

片方には靴下が入っていて、もう片方には木炭が入っている。

You’re not going to get confused and ask how “Kezzer” can contain both socks and coal, even though it is the same name.

靴下と木炭がそれぞれの箱に入っているが、同じ名前である"Kezzer"タグが付いていても混同しないだろう。

Because the name isn’t containing the (crappy) presents.

なぜなら名前それ自体には(くだらない)プレゼントが含まれていないからだ。

It’s just pointing at them.   

名前はただそれらを示しているだけにすぎない。

Similarly, :ruby doesn’t contain the values in your hash, it just points at them.

同様に、:rubyは貴方が記述した値はハッシュに含まれない。ただ示しているだけだ。

はは
なんかオシャレな例えだねw See you :)

記事)

Understanding Symbols In Ruby - Stack Overflow