メソッド(関数)とは
メソッドとはプログラムの中で何か特定のことをする命令や指示のようなもののことです。
例えばポケモンのゲームをやっていて、「たたかう」のコマンドで相手に10万ボルトのような技で攻撃するという命令を出すとします。この10万ボルトで相手を攻撃するというのがメソッドです。
ポケモンの攻撃プログラムを作ると以下のようになります。
class Pokemon
attr_accessor :name, :hp
def initialize(name, hp)
@name = name
@hp = hp
end
def attack(target, move)
puts "#{@name} uses #{move}!"
damage = calculate_damage(move)
target.take_damage(damage)
end
def take_damage(damage)
@hp -= damage
puts "#{@name} took #{damage} damage! HP: #{@hp}"
end
private
def calculate_damage(move)
# ここで各技のダメージを計算するロジックを実装
case move
when "Thunderbolt"
return 20
# 他の技のダメージもここに追加
else
return 0
end
end
end
# ポケモンのインスタンスを作成
pikachu = Pokemon.new("Pikachu", 50)
enemy = Pokemon.new("Enemy", 50)
# ピカチュウが攻撃する
pikachu.attack(enemy, "Thunderbolt")
⚫︎補足
メソッドはdefとendで囲みます。defの後に attackなどと書いてあるので
攻撃のことが書いてあるのだなとわかりますよね。これで攻撃メソッドとなります。
引数
プログラムの一部分に渡す情報のことです。
ex)
あなたが彼女にラブレター(手紙)を渡すとします。ラブレター(手紙)の中身が引数で、彼女が手紙を読むことであなたが伝えたいことが伝わります。引数は、メソッドや関数の括弧の中に書かれていて、そのメソッドや関数が何をするかを決めるのに使われます。
例えば、彼女に手紙を書くメソッドを作るとします。そのメソッドには、手紙の内容(引数)を渡す必要があります。
例えば、次のようなRubyコードがあるとします。
def love_letter(name,message)
puts "#{name}へ: #{message}"
end
love_letter("メアリ","付き合ってください‼︎")
表示結果は
メアリへ: 付き合ってください‼︎
となります。
キーワード引数
プログラムの一部分に情報を渡す方法の一つで、情報を渡す際にその情報の役割や意味をわかりやすく示すことができます。
ex)
彼女にプレゼントを贈るとします。プレゼントには、色やサイズなどの情報があります。
キーワード引数を使うと、その情報を具体的に指定できます。
例えば、"color: 'ピンク'"や"size: '大'"といった具体的な情報をプレゼントと一緒に渡すことができます。
メソッドや関数に渡す情報をキーワード引数として指定でき、どの情報が何のために使われるのかがわかりやすくなります。
def buy_gift(item:, color:, size:)
puts "プレゼント: #{item}, 色: #{color}, サイズ: #{size}"
end
buy_gift(item: "ワンピース", color: "ピンク", size: "中")
プレゼント: ワンピース, 色: ピンク, サイズ: 中
buy_giftというメソッドを定義し、3つのキーワード引数を受け取ります。
:item、color、size。そして、それぞれの引数を使ってプレゼントの情報を表示しています。
戻り値
プログラムの一部分が終わった後に返される情報のことです。小学生にもわかるように説明すると
ex)
あなたが友達にLINEを送って、友達がそのLINEを読んだ後に何かを返してくれるとします。
その何かが戻り値です。
メソッド(関数)の実行が終わった後にその結果を返します。
ex)
計算機を使って足し算をして、その結果を知りたいとします。計算機がその結果を返してくれるのが戻り値です。
# メソッドを定義。このメソッドは、2つの数字を受け取り、それらを足して結果を返す。
def add_numbers(num1, num2)
result = num1 + num2 # num1とnum2を足して、その結果をresultに代入
return result # 計算結果であるresultを返す。
end
# メソッドを呼び出して、結果を変数に代入します。
sum = add_numbers(5, 3)
puts "足し算の結果は #{sum} です。" # 結果を出力します。
resultが、ここでは戻り値です。
資料
ChatGPTを参照