choco-ballの日記

勉強のアウトプットのためのブログ

Ruby(9) メソッドとは?

今回はメソッドについて学習しましょう。
まずそもそもメソッドってなに?というところですが、
メソッドというのは処理に名前をつけて使いまわせるようにするものです。
例えばですが、コンビニのレジで生産をするときに
一つ一つの商品に対して税率の計算をしていくと時間がかかりますし大変ですよね。
そこでメソッドの出番です。
予め税率を計算するための処理をメソッドとして名前をつけて登録しておきます。
すると商品を登録スキャンしてメソッドの名前を入れるだけで自動で計算して結果を出してくれるようになります。
これがメソッドです。
Rubyではdef〜endまでをメソッドとして扱います。
では基本的な記述を見てみましょう。

// メソッドの定義
def メソッド名(仮引数)
end

// メソッドの呼び出し
メソッド名(引数)

これが基本形です。
引数というのはメソッドなどに渡したい値です。
仮引数というのは外部から受け取った値を仮引数に入れてメソッド内で扱うために必要になります。
例を見てみましょう。

def num_put(num)
  puts num
end

number = 10
num_put(number)







プログラムは上から順に進んでいくのになぜこれでエラーが出ないの?
と思った方はなかなか目の付け所がシャープです。
これはプログラムが読み込まれるときにメソッド部分は読み飛ばされるためです。
具体的にいうとメソッドは呼び出されて初めて機能するものだからです。
それを踏まえた上で処理の流れを追ってみましょう。
プログラムが読み込まれてメソッドはスルーされ
最初に変数numerの宣言が行われます。
次に引数として変数numberをメソッドnum_putに送ります。
メソッドは受け取った変数numberを仮引数numとして扱い処理を行います。
puts numが実行され、結果として10という数値が出力されます。
ではもう一つ例を

def num_put(num)
  return num += (num * 0.1).floor //floorメソッドによって計算結果を小数点以下切り捨て
end

number = 100

puts num_put(number)
# 結果
# 110


早速プログラムの流れを見ていきましょう。
まず最初に変数宣言し、putsメソッド処理として宣言した変数を引数としてメソッドに送ります。
メソッド内では受け取った変数をnumとして扱い、記述された計算を行います。
ここで出てきたreturnというのはメソッド呼び出しもとに返す値を指定する文です。
呼び出しもとに返す値を返り値や戻り値と言います。
今回は計算式の結果を呼び出しもとに返します。
メソッド内で処理した値を呼び出しもとが受け取り、putsメソッドに従い結果を出力します。
上記のような流れとなります。
returnに関しては省略することができます。
省略した場合には最後の処理の結果を戻り値として渡します。
このあたりは概念的なものなので慣れるしかないです。
一緒に頑張っていきましょう!