2017.09 «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - » 2017.11
TOP > StringとSymbolの違い

 ← railsを初めて動かす04【validation入力項目エラーチェックその1】 | TOP | railsを初めて動かす03【スタイルシートcssをいじる】

スポンサーサイト 

--年--月--日 (--)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


【広告】

[--.--.--(--) --:--] スポンサー広告 | Trackback(-) | Comment(-)
↑TOPへ

StringとSymbolの違い 

2007年05月22日 ()
Rubyのソースコードを見ていて、"note"という普通の文字列と:note のように、コロンから始まる文字列のようなものが混在しているのに気が付きました。

調べてみると、"note"の方が、Stringオブジェクトで、:noteの方がSymbolオブジェクトで、すごい似てる!!らしいです。

#irb "note".class
=> String
#irb :note.class
=> Symbol



じゃあ、何が違うのかというと、Stringは、記述するたびに、新しいメモリを食います。Symbolは、同じ文字だったら、最初の1回だけメモリを食って、あとは同じメモリを使いまわします。

つまり

print "hello"
print "hello" #これはメモリを食う

print :hello
print :hello #これは、1回目の:helloと同じメモリを共用する



じゃあ、文字列っていらないのかな?文字列を使うメリットもどこかであるはずですね。どこでしょうか…

[追記 07/08/10]
いやー、このエントリを書いた頃は若かった。今も若いけど。

今、思いつく限りで追記すると、

・String はくっつけられる
・String のダブルクォーテーションは中で変数の値を展開できる

・Symbol はくっつけられない
・Symbol は変数の値を展開できない

例で示した方が分かるっつーの、という訳で、どうぞ。

print "abc" + "def"
=> abcdef
print :abc + :def
=> シンタックスエラー 。゚(゚´Д`゚)゚。
print :abc.to_s + :def.to_s
=> abcdef ※String 型に変換したからです。



str1 = "HANAMOGERA"
print "tamorino#{str1}"
=> tamorinoHANAMOGERA
print 'tamorino#{str1}'
=> tamorino#{str1}
print :tamorino#{str1}
=> tamorino ※シャープ#から後ろは、コメントアウト扱いになる



【広告】

[2007.05.22(Tue) 23:53] Rubyの文法Trackback(0) | Comments(4)
↑TOPへ


COMMENT

文字列のメリット by 梅せんべい
どうもはじめまして。
文字列の中で変数の値を展開できますよ。

ほんとうですね by 自分
初コメントありがとうございます!

しばらくこのエントリを放っておいたのですが、なるほど、String オブジェクトは、ダブルクォーテーションで囲むと中で変数の値を展開できますね。

my_val = 'abc'
p "123#{my_val}456"

だと

123abc456

ですね。ありがとうございました!

yam by -
#irb :note.class
=> System

これって
=>Symbol

でしょうか?

そうですね by 自分
↑ yam の題名でかいてくださった方へ

そ、その通りです。

こんな細部まで見てくださってありがとうございます。

早速修正しておきましたので、今後とも応援よろしくお願いします!

コメントを閉じる▲
 ← railsを初めて動かす04【validation入力項目エラーチェックその1】 | TOP | railsを初めて動かす03【スタイルシートcssをいじる】

COMMENT

どうもはじめまして。
文字列の中で変数の値を展開できますよ。
[ 2007.07.20(Fri) 00:12] URL | 梅せんべい #JalddpaA | EDIT |

初コメントありがとうございます!

しばらくこのエントリを放っておいたのですが、なるほど、String オブジェクトは、ダブルクォーテーションで囲むと中で変数の値を展開できますね。

my_val = 'abc'
p "123#{my_val}456"

だと

123abc456

ですね。ありがとうございました!
[ 2007.07.21(Sat) 21:35] URL | 自分 #RaJW5m0Q | EDIT |

#irb :note.class
=> System

これって
=>Symbol

でしょうか?
[ 2008.01.03(Thu) 01:29] URL | #- | EDIT |

↑ yam の題名でかいてくださった方へ

そ、その通りです。

こんな細部まで見てくださってありがとうございます。

早速修正しておきましたので、今後とも応援よろしくお願いします!
[ 2008.01.04(Fri) 03:03] URL | 自分 #aYENU.lE | EDIT |

COMMENT POST















管理者にだけ表示

 ← railsを初めて動かす04【validation入力項目エラーチェックその1】 | TOP | railsを初めて動かす03【スタイルシートcssをいじる】
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。