learn-ruby-in-kansai:1229
From: Shin'ya Adzumi <adzumi@d...>
Date: Sat, 26 Nov 2005 13:22:25 +0900
Subject: [learn-ruby-in-kansai:1229] Re: シンボルという概念 Re: Rubyについてのnoviceな質問はOK?
あづみです。 やっぱり ruby-list に流したほうが的確な答えが返ってくるんじゃな いかなとか思いつつ。 別に怖いところじゃないですよ。ときどきパッチが返ってくるぐらい。 クラフトギア 渡辺俊輔 wrote: > さっそくですが、Symbolという概念が理解しきれず、なんだかもやもやしており > ます。 > > リファレンスを読むと、「文字列と一対一に対応するオブジェクト」と書いてあ > るのですが、 > 「なぜ普通の変数ではいけないのか? もしかするとSymbolを使うことには、コー > ドの文脈上何らかの意図を明白にする効果があるのだろうか?」 > という疑問が頭の中で渦巻いて仕方ありません。 > Railsを触っていると、scaffoldを始めERbでも多用されているので、なんとかすっ > きりしたいと願っています。 文字列と一対一に対応するオブジェクトとは、こういう意味です。 # String p "abc".id # => 538370728 p "abc".id # => 538309996 # Symbol p :abc.id # => 4036878 p :abc.id # => 4036878 文字列の場合、同じ文字列でも、生成するたびに id が変わる (つまり別オブジェクト)なのに対し、Symbol の方は、同じ文字列で あれば必ず同じ id(つまり同じオブジェクト)になります。 String でも Symbol でもどっちでもいいような箇所の場合に、 Symbol を使うと、 * オブジェクトを生成する回数が減る(結果GC回数も減る) * String#== よりも Symbol#== の方が早い こんな感じですかね。なんかもっといろいろあるかも。 安積伸弥 adzumi@d... -- ML: learn-ruby-in-kansai@r... 使い方: http://QuickML.com/ 公式ページ: http://jp.rubyist.net/?KansaiWorkshop 過去ログ: http://www.fdiary.net/ml/learn-ruby-in-kansai/
1225 2005-11-23 14:43 [nshttsk@g... ] 復帰 and 懇親会締め切り 1226 2005-11-25 15:07 ┗[craftgear@a... ] Rubyについてのnoviceな質問はOK? 1227 2005-11-25 15:29 ┗[konami@k... ] 1228 2005-11-26 01:30 ┗[craftgear@a... ] シンボルという概念 Re: Rubyについてのnoviceな質問はOK? -> 1229 2005-11-26 05:22 ┣[adzumi@d... ] 1230 2005-11-26 07:09 ┃┣[xml@t... ] 今日は失礼しました 1231 2005-11-26 13:21 ┃┗[craftgear@a... ] 1233 2005-11-26 18:26 ┃ ┗[speakillof@y... ] 1235 2005-11-27 06:35 ┗[usa@g... ] 1238 2005-11-27 16:05 ┗[craftgear@a... ]