#メソッド
メソッドとは、ある処理をまとめたものです。
##メソッドの定義
「def メソッド名」と「end」の間に、まとめたい処理を書くことでメソッドをつくることができます。このことを「メソッドを定義する」と言います。
例)
def introduce # introduceメソッドを定義
puts "こんにちは"
puts "私はTakayukiです"
end
上の例では、2つの出力を行う、introduceメソッドを定義しています。
###メソッドの呼び出し
メソッドは、定義するだけでは実行されません。
「メソッド名」とすることで実行できます。メソッドを実行することを、「メソッドを呼び出す」と言います。
例)
def introduce # introduceメソッドを定義
puts "こんにちは"
puts "私はTakayukiです"
end
introduce
コンソール
こんにちは
私はTakayukiです
##引数
引数(ひきすう)とはメソッドに与える追加情報のようなものです。メソッドを呼び出すときに一緒に引数を渡すことで、メソッドの中でその値を利用することができます。
例)
def introduce(name)
#処理
end
このように、「def メソッド名(引数名)」とすることで、引数を指定することができます。
###引数を受け取るメソッドの呼び出し
引数を渡してメソッドを呼び出すには、「メソッド名(値)」とします。
メソッドは、指定した値を受け取り、その値は引数に代入されます。
例)
def introduce(name)
#処理
end
introduce("Yukihiro")
introduceメソッドの呼び出し時に「"Yukihiro"」という値が渡され、引数nameに代入されています。
###メソッド内で引数を使用する
引数はメソッド内では変数のように使用することができます。
例)
def introduce(name)
puts "こんにちは"
puts "私は#{name}です"
end
introduce("Yukihiro")
introduce("Takayama")
コンソール
こんにちは
私はYukihiroです
こんにちは
私はTakayamaです
###引数の呼び出し時の注意点
引数のあるメソッドは、引数を渡さずに呼び出すことができません。
引数を渡さないで呼び出そうとすると、エラーになってしまいますので注意が必要です。
##メソッド定義のスコープ
メソッドを定義するときに用意した引数は、そのメソッドの中(defからendまでの間)でしか使うことができません。
###メソッドの中の変数
メソッドの中で定義した変数も、引数と同じように、そのメソッドの中(defからendまで)でしか使うことができません。
##複数の引数
引数は複数受け取ることもできます。括弧の中に受け取る引数をコンマ(,)で区切って並べることで、複数の引数を指定することができます。
例)
def introduce(name,age)
puts "私は#{name}です"
puts "#{age}歳です"
end
introduce("Yukihiro",25)
コンソール
私はYukihiroです
25歳です
引数は、左から順番に「第1引数、第2引数」というように呼びます。
##戻り値
呼び出し元で受け取る処理結果を戻り値(もどりち)と呼び、このことを「メソッドが戻り値を返す」と言います。
「return 値」と書くことで、メソッドはその値を戻り値として返します。
def add(a,d)
return a + b #戻り値
end
sum = add (1,3) #呼び出し部分
puts sum
コンソール
4
戻り値がある場合、メソッドの呼び出し部分がそのまま戻り値に置き換わります。
よって、このようにメソッドの呼び出し部分を変数に代入するように書くことで、メソッドの戻り値を受け取ることができます。
###戻り値if
if文で使うような条件式をreturnすると、その条件式の結果として得られる真偽値(trueまたはfalse)を返すことができます。
真偽値を返すメソッドは、メソッド名の末尾に「?」をつける慣習があります。
def nagative?(number)
return number < 0
end
puts negative?(5)
コンソール
false
###returnの性質
returnは、戻り値を返すだけでなく、メソッドの処理を終了させる性質も持っています。
よって、returnの後にあるメソッドの処理は実行されません。
###複数のreturn
メソッドでは、条件分岐を組み合わせることで複数のreturnを用いることができます。
例)
def judge(score)
if score > 80
return"よくできました"
end
return "がんばりましょう"
end
puts judge(70)
コンソール
がんばりましょう
この例では、引数が80以下なので、ifの中のreturnは実行されず、if文の後のreturnが実行されています。もし引数が80より大きければ、ifの中のreturnが実行され、そこで処理が終了します。
##キーワード引数
引数の数が多くなると、呼び出し側で値がどの引数に入るのかがわかりにくくなります。
キーワード引数を用いた書き方をすることで、呼び出し側で引数を明記することができ、わかりやすくなります。
例)
def introduce(name:,age:)
puts "私は#{name}です"
puts "#{age}歳です"
end
introduce(name:"Yukihiro",age:25)
① 定義側で、引数の後にコロンを付ける
② 呼び出し側で、値の前に引数名を書く
とすることで、キーワード引数を持つメソッドを書くことができます。
##おわり
Ruby 基礎
Ruby 基礎(配列について)