rubyの基礎(2)型変換的メソッド
どのプログラミング言語でも型の変換は重要です。例えば、整数2を文字列としての"2"にしたり、逆に文字列としての"100"を整数100に型変換することはよくあります。
rubyでは、to_i、 to_f、 to_s、 to_a、 to_h といった型変換的なメソッドが用意されています。
# -> Fixnum
irb> 1.to_i # 自分自身を返す
=> 1
# -> Float
irb> 1.to_f
=> 1.0
# -> String
irb> 1.to_s
=> "1"
irb> "123".to_i
=> 123
# ちなみに配列->ハッシュは
irb> [[1,2],[3,4],[5,6]].to_h
=> {1=>2, 3=>4, 5=>6}
# ちなみにハッシュ->配列は
irb> {'a'=>1,'b'=>2,'c'=>3}.to_a
=> [["a", 1], ["b", 2], ["c", 3]]
ちなみに文字列に整数を連結するとどうなるか? TypeErrorエラーになります。
irb> i = 'a'
=> "a"
irb> i + 3
TypeError: no implicit conversion of Fixnum into String
from (irb):42:in `+'
from (irb):42
from /usr/bin/irb:11:in `<main>'
ここでは次のようにto_sメソッドで文字列に変換してから連結しないと動きません。
irb> s = 'a'
=> "a"
irb> s + 3.to_s
=> "a3"
このようにrubyではメソッド実行で行う際の型の不一致はエラーになります。(+は連結するメソッドなのでこの処理の中で正しい型、つまりStringでないと、正しい処理ができないのです)
ちなみに、文字列を囲むダブルクォーテーション(")とシングルクォーテーション(')とは処理に違いがあります。
・ダブルクォーテーション ・・・ 文字列中の変数を変数値に置換し、エスケープシーケンスを特殊文字として解釈される。
・シングルクォーテーション ・・・ 文字列中の変数を変数値に置換せず、エスケープ文字はバックスラッシュ(\)を付けて表示される。
そのため内部的にダブルクォーテーションの方が高機能な処理を行っておりシングルクォーテー ションの方が処理が速いです。 変数の置換を行う必要が無い場合はシングルクォーテーションを使うようにしましょう。
irb> i = 10
irb> "#{i}"
=> "10"
irb> '#{i}'
=> "\#{i}"
irb> "\n"
=> "\n"
irb> '\n'
=> "\\n"
この記事が気に入ったらサポートをしてみませんか?