【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 # 特異メソッドを呼び出す