【Ruby】メソッドの定義と呼び出し

メソッド

文法

def メソッド名(引数1, 引数2, …)
実行する処理
実行する処理
end
def はメソッドを定義します。

def hello           # helloメソッドを定義する
  puts "Hello!!"
end

hello               # helloメソッドを呼び出す

(引数1, 引数2, …) で引数を受け取ることができます。

def hello(name)
  puts "Hello " + name
end

puts hello("Yamada")    #=> Hello Yamada

デフォルト値をあらかじめ設定して、引数を省略することもできます。

def hello(name = "Yamada")
  puts "Hello " + name
end

puts hello              #=> Hello Yamada

メソッドの戻り値

文法

return 戻り値

return は、メソッドの戻り値を指定します。

def add(x, y)
  return x + y
end

可変引数

引数の前に * をつけると、
残りの引数をすべて 可変引数 の配列として渡すことができます。

def func(num, *args)
  p num                # 123
  p args               # ["A", "B", "C"]
end

func(123, "A", "B", "C")

メソッドにブロックを渡す

引数に & をつけると、ブロックを渡すことができます。

def hello(cnt, &block_arg)
  cnt.times do
    block_arg.call
  end
end

hello(3) { print "Hello " }       #=> Hello Hello Hello

特異メソッド

作成済みのオブジェクトに対して、
一時的なメソッド(特異メソッド)を追加することが可能です。
自分自身のオブジェクトは self で参照できます。
ただし、Fixednum、Symbol、true, false, nil に対しては特異メソッドを定義できません。

str = String.new("ABC");

def str.print                     # strオブジェクトに特異メソッドを定義
  puts "[[[" + self + "]]]"
end

str.print                         # 特異メソッドを呼び出す

Ruby2入門

Posted by 管理人