Rubyのいろいろなメソッドを動かそう!
Rubyでは複数の処理をまとめたのをメソッドと言います。
他の言語、JavaScriptやPythonなら関数と呼ぶがRubyではメソッドと呼びます。
ただ処理の仕方はJavaScriptやPythonの関数と基本は同じだがRubyにしかない処理もあります。
では、実際にコードを見ましょう。
【コード】
#メソッド
#メソッドは処理のまとまり
#呼び出されるまで実行されない
def study(lang)
p "#{lang}入門"
p "#{lang}講座"
end
#メソッド呼び出し
study("ruby")
study("php")
#引数のデフォルト値
def say_age(me="私",age=30)
p "#{age}は#{age}歳です"
end
say_age
say_age(nil,20)
say_age("君",20)
#キーワード引数
def say_age(age: 30)
p age
end
say_age(age: 20)
say_age
#可変長引数
def price(*i)
p i #[1,2,3]
end
price(1,2,3)
#オプション引数
def price(**i)
p i
end
price(item1: 100, item2: 200)
【解説】
最初のコードは引数付きです。
Rubyの引数付きメソッドはこのような形になります。
def メソッドの名前(引数1、引数2…)
処理
end
呼び出され方としてメソッド内の処理は呼び出されずにend以降の処理が最初に呼び出されます。
study("ruby")、study("php")が先に呼び出されそれがメソッド内の処理のp "#{lang}入門"、p "#{lang}講座"のlangにruby、phpが代入されてruby、phpと出力されます。
2番目のコードはデフォルト値です。
デフォルト値は引数に既に値を指定できる処理です。
メソッド呼び出し値で引数の値を変えることができます。
このような感じです。
def メソッド名(変数1=デフォルト値1, 変数2=デフォルト値2, ...)
実行する処理
実行する処理
end
me="私",age=30で引数に値を私と30を入れてます。
say_ageで私は30歳ですと出ます。
次の戻り値のsay_age(nil,20)のnilは何も存在しないって処理で0ですから私になります。
引数20はage=30をage=20にするので
私は20歳ですと出力します。
最後の戻り値はsay_age("君",20)はme、ageのデフォルトを全て変えてるので
君は20歳ですと出ます。
あとキーワード引数でキーワードに引数がつけられます。age: 30のように何の処理かが分かりやすくなります。
可変長引数がありこれはRuby独特な処理です。
可変長引数は個別に指定するのでなく配列を指定する時に使用されます。
次のコードの
def price(*i)のように
必ず引数に✳︎アスタリスクをつけて下さい。
配列の要素を複数個指定します。
インスタンスにprice(1,2,3)と引数は何個でも構いません。
これを処理すると1、2、3と出力されます。
そして最後に解説するオプション引数もRuby独特な処理です。
オプション引数とは一つの変数で配列のキーと値を取り出す処理です。
書き方はdef メソッド名( **引数名 )です。
必ず**二つ書きましょう。
def price(**i)でiが配列のキーと値を取得。
このprice(item1: 100, item2: 200)中の
item1 100 、item2 200を取得するので
> item1 100 、item2 200と表示されます。
【結論】
特に可変長引数、オプション引数はRuby独特な処理なので身につけたい。
可変長引数はdef price(*i)で配列の要素を複数個取得できる、オプション引数はdef price(**i)で配列のキーと値をセットで取得できます。
取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com