Rubyのメソッドの引数にハッシュを渡す

Rubyの引数にハッシュを渡す時{}を省略することができる

def profile(hash)
p hash
end
hash = {a: 1, b: 2, c: 3}
profile(hash)
# {:a=>1, :b=>2, :c=>3}
profile({a: 1, b: 2, c: 3})
# {:a=>1, :b=>2, :c=>3}
profile(a: 1, b: 2, c: 3)
# {:a=>1, :b=>2, :c=>3}

例のように先頭に他の引数があり、以降はハッシュなら同じように省略できる。

def profile(str, hash)
p str
p hash
end
profile("Tom", a: 1, b: 2, c: 3)
# "Tom"
# {:a=>1, :b=>2, :c=>3}

以降に他の引数がある場合は省略できないが、{}で囲めばハッシュを渡すことは可能である。

def profile(hash, num)
p hash
p num
end
profile(a: 1, b: 2, c: 3, 10)
# example.rb:5: syntax error, unexpected ')', expecting =>
profile({a: 1, b: 2, c: 3}, 10)
# {:a=>1, :b=>2, :c=>3}
# 10

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA