【Ruby】メソッド

メソッドは、defの後にメソッド名を記述し、引数がある場合は括弧の中に引数名を記述して定義します。

# メソッドを定義する
def sayHello(name)
  return "Hello, " + name
end
# メソッドを呼び出す
puts sayHello("George")
puts(sayHello("Paul"))

引数のあるメソッドを呼ぶ場合は、引数を括弧で括っても括らなくてもOKです。

上記プログラムの実行結果は以下のようになります。

Hello, George
Hello, Paul

メソッドの戻り値はそのメソッド内の最後の式の値になるのでreturnは省略することができます。

def addNum(num1, num2)
  # メソッドの中の最後の式の値が戻り値
  num1 + num2
end

puts addNum(1, 2)

上記プログラムの実行結果は以下のようになります。

3

メソッド呼び出しにブロックを関連付けて、メソッド内でyield文を使ってそのブロックを呼び出すことができます。

def sayHelloWithBlock1
  # ブロックを呼び出す
  yield
end

sayHelloWithBlock1 {
  puts "Hello"
}

上記プログラムの実行結果は以下のようになります。

Hello

次は引数のあるブロックの例です。

def sayHelloWithBlock2
  # パラメータを指定してブロックを呼び出す
  yield "Hello", "John"
  yield "Hi", "Ringo"
end

sayHelloWithBlock2 do |greeting, name|
  puts greeting + ", " + name
end

ブロックの引数は、|で囲んで指定します。

上記プログラムの実行結果は以下のようになります。

Hello, John
Hi, Ringo