Rubyの基本記述と型変換
Rubyファイルの作成
まずはターミナルで下記記述を行いRubyのプログラムファイルを作成します。
*Rubyのファイルは拡張子「.rb」で作成します。
$ touch ruby.rb
このように「ruby.rb」が作成されればOKです。
基本の書き方
ruby.rbにコードを記述する
Rubyではputsという命令を実行することで文字列を出力することができます。
*putsは「受け取った値を文字列をして出力する」働きです。
先ほど作成したruby.rbのファイルに下記のように記述してみましょう。
puts 'Hello World!'
ruby.rbを実行する
Rubyのプログラムを実行するにはrubyコマンドを使用します。
*rubyコマンドの実行方法はターミナルで$ ruby 実行したいファイル名
です。
実際に下記のように入力してみましょう。
$ ruby ruby.rb
実行後は以下のように反映されれば成功です。
username:~/environment $ ruby ruby.rb
Hello World!
型について
Rubyでは各データがどのようなデータを表しているかを区別するために「型」というものがあります。
Rubyには様々な方が存在しますが、今回は文字列型(String)と整数型(Integer)の違いをまとめます。
文字列型は値を""で囲みます。
# 整数型
puts 7
# 文字列型
puts "7"
上のコードを実行すると、以下のように表示されると思います。
username:~/environment $ ruby ruby.rb
7
7
単体で出力した場合、どちらも同じように出力されますが、
内部では文字列型と整数型のように区別されて処理されているので、
下記のように記載して違いを確認していきます。
puts 7 + 3
puts "7" + "3"
puts "7 + 3"
上記のように記述して実行すると、以下のように出力されます。
username:~/environment $ ruby ruby.rb
10
73
7 + 3
文字列型と整数方の型変換方法
型の説明で記載したように、同じ型同士は+で繋げることができますが、
型の違うもの同士を+で繋げるとエラーが発生してしまいます。
このエラーを防ぐために 型変換
を使い、データの型を統一します。
to_s(整数型→文字列型)
to_sは整数型から文字列型に変換するメソッドです。
実際にコードを打ち込んで確認します。
「私の年齢は25歳です」と表示しようと思います。
puts "私の年齢は" + 25 + "歳です"
上のコードを実行すると文字列型と整数型を連結させようとしているため、
以下のようにエラーが発生します。
username:~/environment $ ruby ruby.rb
ruby.rb:1:in `+': no implicit conversion of Integer into String (TypeError)from ruby.rb:1:in `<main>'
ruby.rbのコードをto_sを用いて以下のように変更します。
puts "私の年齢は" + 25.to_s + "歳です"
整数型25に対して、.to_s
メソッドをつけてあげることで、25が文字列型に変換されたため、
+で連結することができ、以下のように出力することができるようになります。
username:~/environment $ ruby ruby.rb
私の年齢は25歳です
to_i(文字列型→整数型)
to_iは文字列型から整数型に変換するメソッドです。
to_sと同様に実際にコードを打ち込んで確認します。
200と300を計算して500と出力しようと思います。
puts 200 + "300"
上のコードを実行すると整数型と文字列型を連結させようとしているため、
to_sの時と同様に以下のようにエラーが発生します。
username:~/environment $ ruby ruby.rb
ruby.rb:1:in `+': String can't be coerced into Integer (TypeError)from ruby.rb:1:in `<main>'
エラーを解消するために、ruby.rbのコードをto_iを用いて以下のように変更します。
puts 200 + "300".to_i
"300"という文字列に.to_iをつけてあげることで、整数型の300に変換され、
整数型の足し算として以下のように出力できるようになりました。
username:~/environment $ ruby ruby.rb
500
補足
to_sとto_iがどっちがどっちかわからなくなることが多いので補足します。
Discussion