メソッド
オブジェクトは、メソッドと呼ばれる処理によって自身の形を変えたりすることができる。
例えば、文字列オブジェクトがlength
というメソッドを利用すると、自身の文字数である数値オブジェクトに姿を変える。
Rubyでは、オブジェクトごとにそれぞれ利用できるメソッドが定義されている。
lengthメソッド
length(レングス)メソッドは、文字列が利用できるメソッドで、文字列の文字の数を数えてくれる。
メソッドを利用するには、以下のようにオブジェクトに対してメソッド名(length)を.(ドット)で繋ぐ。
1 2 |
irb(main):001:0> "Hello World".length # 文字列の文字数を返す
=>11
|
"Hello World".length
は、一つの式として見ることもできる。
上の例で=>の後に表示されているのは、「Hello World」の文字数11です。
ここはとても重要なこと。
この結果を説明する時、lengthメソッドは返り値として数値オブジェクトの11を返したという表現をする。
返り値
返り値とは、オブジェクトやメソッドが処理された後の最終的な値のことです。戻り値とも言う。
Rubyのオブジェクト自体、またはメソッドを利用した式には、全て返り値がある。
メソッドとその返り値はプログラムでは非常に頻繁に使用する。
1 2 |
irb(main):001:0> "good morning".length #lengthで数えた文字数返す
=>12 #続けてこのように表示されれば成功
|
文字列と数値の連結
文字列"i am "
, 数値20
, 文字列" years old."
この3つのオブジェクトを連結して出力する場合を考える。
単純に+
を使って以下のように実行しても、エラーが出てしまう。
1 2 |
irb(main):001:0> puts "i am " + 20 + " years old." #error
TypeError: no implicit conversion of Fixnum into String
|
文字列と数値は別のオブジェクトなので、連結することができないためエラーが起こる。そこで、to_sメソッドを利用して数値である20を文字列に変換する。
to_sメソッド
数値オブジェクトのメソッド。
数値オブジェクトを文字列に変換してくれる。
【例】
1 2 |
irb(main):001:0> 20.to_s #数値 20 にto_sメソッドをつけて実行
=> "20"
|
to_sメソッドによって、文字列"20"が返り値となっている。
1 2 3 |
「はじめから文字列"20"
を用意すればよかったのでは?」と思うかもしれないが、処理の結果が必ず数値で返ってくる値を文字列として利用したい場合など、to_s
メソッドを利用することは多くある。