hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

メソッド

オブジェクトは、メソッドと呼ばれる処理によって自身の形を変えたりすることができる。

例えば、文字列オブジェクトが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
  irb(main):001:0> puts "i am " + 20.to_s + " years old."  #to_sで数値を文字列に変換し、連結
  i am 20 years old.                                   #続けてこのように表示されれば成功
  =>nil

「はじめから文字列"20"を用意すればよかったのでは?」と思うかもしれないが、処理の結果が必ず数値で返ってくる値を文字列として利用したい場合など、to_sメソッドを利用することは多くある。