メソッドを自分で定義する
メソッドは予め用意されたものだけでなく、自分で定義することもできる
メソッドとは、決まった処理のまとまり
プログラム中でメソッド名を書くだけで、メソッドのdef メソッド名からendの間に書かれた処理が実行さ
れる
メソッドの定義部分はそのメソッドが実行されるまで読まれない
def メソッド名
# 実行する処理
#defの横に書いた文字がメソッド名となる
end
例:
# メソッドの定義
def say_hello
puts "Hello World"
end
# メソッドの実行
say_hello
def~endの部分は初めは読み飛ばされる
say_helloでメソッドを呼び出し、初めて定義部分を読み、定義内の処理が実行される
戻り値
メソッドから呼び出した場所に渡される値
メソッドが処理された後の最終的な値のこと
例:
def sample
"1"
"2"
"3" # 最後の行が戻り値になる
end
puts sample # => 3
return文
メソッド内でreturn ◯◯と記述すると、returnの後ろに続けた式がそのメソッドの戻り値になる
returnを利用した時点で戻り値が決まり、メソッドはその行の処理を終えると強制的に終了
Rubyではreturn文を省略できる。省略した場合、メソッドの戻り値はそのメソッドの中で最後に実行された式の値になる
例:
def sample
"1"
"2"
"3"
return "4" # ここで処理は終わり
"5" # 呼ばれない
"6" # 呼ばれない
end
puts sample # => 4
スコープ
定義した変数が使える範囲
基本的にメソッドの外に定義されている変数は、メソッドの中では使えない
その逆に、メソッドの中で定義された変数は、メソッドの外では使えない
引数
メソッドなどに渡すことのできる値のこと
引数によって、メソッドは外にある変数(スコープ外の変数)の値をメソッド中で扱うことができる
メソッド定義時に()のなかに記述しておき処理に利用するカリ引数と、メソッドを呼ぶ際に()のなかに渡す値を記述する実引数がある
実引数と仮引数の名前は、同じでも別の名前でも動作に違いはない
引数は複数用意でき、左から順に「第一引数」「第二引数」...「第○引数」と呼ぶ
実引数と仮引数の数は、必ず一致している必要がある
def メソッド名(仮引数)
# 処理
end
# メソッドの呼び出し
メソッド名(実引数)
例:
def sample(number) # ②仮引数numberで、実引数「3」の値を受け取る
puts number * number # ③「3」が代入されたnumberを使って「3 * 3」を行い出力する
end
sample(3) # ①数値「3」を実引数にしてメソッドを呼び出し
times, eachメソッドのスコープ範囲
times, eachメソッドはメソッドの外で定義した変数でも、引数を使用しなくても使用できる
メソッドの中で定義した変数はdefと同様使用できない
例:
num = 1
lists = [1, 2, 3]
lists.each do |list|
num = num +list
end
puts num
# 出力結果
7
例:
lists = [1, 2, 3]
lists.each do |list|
num = 1
num = num + list
end
puts num
# エラーが出る