引数を付けたメソッド呼び出し
【開発環境】
OS:Win10(64ビット)
Ruby 3.0.1
VSCodeバージョン: 1.57.1
呼び出し側ではメソッドに渡したいオブジェクトを引数として記述してメソッドを呼び出します。
・書式
メソッド名(引数1, 引数2, ...)
・メソッド側
def メソッド名(変数1, 変数2, ...)
実行する処理
実行する処理
end
※メソッドを呼び出す側で指定した引数を「実引数」、メソッド定義側で記述した引数を「仮引数」と呼ぶこともあります。
例文
def printHello(msg, name)
print(msg + "," + name + "¥n")
end
printHello("Hello", "Yamada")
上記では引数として「Hello」と「Yamada」と言う文字列オブジェクトを2つ指定しています。メソッドでは引数として「msg」と「name」の2つの変数が指定されていますので、「Hello」が変数「msg」に代入され、「Yamada」が変数「name」に代入されます。
【メソッド定義での変数の扱い】
変数にオブジェクトが代入された時、
変数にはオブジェクトのコピーが格納されるのではなく、変数は代入されたオブジェクトを指し示すようになるだけでした。
メソッドを呼び出す時も同じであり、メソッドに渡されてきたオブジェクトは引数に指定された変数にコピーが格納されるのではなく、変数は引数として渡されてきたオブジェクトを指し示すことになります。
例文
def addString(str)
str << ",Japan"
end
address = "Tokyo"
print(address + "¥n")
addString(address)
print(address + "¥n")
上記ではメソッド内で引数として渡されてきた文字列オブジェクトに別の文字を追加しています。その結果、メソッド呼び出し前と呼び出し後では、変数「address」が指し示している文字列オブジェクトが書き換えられているため、メソッド呼び出しの前と後では別の文字列を出力します。
サンプルプログラム「test3-1.rb」
![](https://blogimg.goo.ne.jp/user_image/06/f3/3a0b436546d5f811a3d5502eb06df57c.jpg)