Rubyのメソッド引数メモ
Rubyのメソッド定義時の引数のパターンをメモ
飾りなし
def some_method(a) puts a end some_method 100 # 100
飾りなし(デフォルト値指定あり)
def some_method(a=100) puts a end some_method # 100
可変長引数(配列受け取り)
def some_method(*a) p a end some_method 1, 2, 3 # [1, 2, 3]
キー指定
def some_method(a:) puts a end some_method a: 100 # 100
キー指定(デフォルト値指定あり)
def some_method(a: 100) puts a end some_method # 100
可変長引数(キー指定受け取り)
def some_method(**a) p a end some_method a: 1, b: 2, c: 3 # {:a=>1, :b=>2, :c=>3}
ブロック
def some_method(&block) block.call 100 end some_method do |value| puts value end # 100
※&blockはyieldで代用可能
上記全タイプの引数を同時に定義する場合(定義できる順番があるっぽい)
class SomeClass attr_accessor :a, :b, :c, :d, :e, :others, :block def some_method(a, b, c="c", *d, e: "e", **others, &block) @a = a @b = b @c = c @d = d @e = e @others = others @block = block end end # 使用 obj = SomeClass.new obj.some_method "a", "b", "c", "d1", "d2" , e: "e", f1: "f1", f2: "f2" do |greet| greet end # 結果 obj.a # "a" obj.b # "b" obj.c # "c" obj.d # ["d1", "d2"] obj.e # "e" obj.others # f1=> "f1", f2=> "f2" obj.block.call "hello" # "hello"