現在プログラミングの初歩の初歩を勉強している者です。
Rubyにおける型変換、
例えばPythonでいうところのstr(number)のような文法があるのかないのか、
教えていただきたいです。
数値を文字列に直すという方法は別に知っているのですが、
単に文法としてこういうものがあるのかどうかを知りたいです。
よろしくお願いいたします。
rubyでの型変換(キャスト)は以下のような感じです。
to_iメソッドは、文字列を10進数の表現と見なして整数に変換します。
文字列の先頭から10進数と見なせる部分を切り取って変換します。見なせる部分がなければ0を返します。
s = "1993"
puts s.to_i //1993
s = "12 Angry Men"
puts s.to_i //12
s = "cat"
puts s.to_i //0
引数baseで文字列が何進数を表しているかを指定できます。デフォルト値は10なので、引数を指定しないときは10進数になります。
baseを0とすると10進数になり、負の値を指定すると例外ArgumentErrorが発生します。
s = "1010"
puts s.to_i(2) //10
s = "0xa0"
puts s.to_i(16) //160
s = "gg"
puts s.to_i(17) //288
以下使い方は同様です。
hex : 16進数を整数に変換。
oct : 8進数を整数に変換。
to_f : 浮動小数点数に変換。
to_s (Fixnum) : 整数を文字列に変換。
rubyでの型変換(キャスト)は以下のような感じです。
to_iメソッドは、文字列を10進数の表現と見なして整数に変換します。
文字列の先頭から10進数と見なせる部分を切り取って変換します。見なせる部分がなければ0を返します。
s = "1993"
puts s.to_i //1993
s = "12 Angry Men"
puts s.to_i //12
s = "cat"
puts s.to_i //0
引数baseで文字列が何進数を表しているかを指定できます。デフォルト値は10なので、引数を指定しないときは10進数になります。
baseを0とすると10進数になり、負の値を指定すると例外ArgumentErrorが発生します。
s = "1010"
puts s.to_i(2) //10
s = "0xa0"
puts s.to_i(16) //160
s = "gg"
puts s.to_i(17) //288
以下使い方は同様です。
hex : 16進数を整数に変換。
oct : 8進数を整数に変換。
to_f : 浮動小数点数に変換。
to_s (Fixnum) : 整数を文字列に変換。
回答ありがとうございます。
ええと、to_iメソッド及びto_sメソッド自体は既に知っていたのですが、
やはりこうしないとRubyではキャストができないのですね。
他の言語だとキャスト用の文法が用意されているものが多く、
Pythonのstr(number)、Javaでの(String)number、PHPでの(string)$numberなどと
同等の文法はないのかなと思ったのです。
ないということがわかってすっきりしました。
ありがとうございます。
ごめんなさい、さっきの回答になってなかっですね、質問最後まで読んでなかったです。rubyにはpython的なキャストの書き方はないと思います。
ありがとうございます!
すみません、私も上の回答だけ見て答えてしまいました。
こちらでも追加回答してくださりありがとうございます。
詳しい方にはっきりと「ない」と言ってほしかったので、
あなたの回答を得て非常にすっきりしました。
回答ありがとうございます。
2019/01/22 20:38:30ええと、to_iメソッド及びto_sメソッド自体は既に知っていたのですが、
やはりこうしないとRubyではキャストができないのですね。
他の言語だとキャスト用の文法が用意されているものが多く、
Pythonのstr(number)、Javaでの(String)number、PHPでの(string)$numberなどと
同等の文法はないのかなと思ったのです。
ないということがわかってすっきりしました。
ありがとうございます。