Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

mergeでhashをくっつける

Hashにはmergeというメソッドがあります。
コイツをつかえば、二つのhashを一本に統合することができます。

{hoge: 1, piyo: 2}.merge!({fuga: 3})
#=> {:hoge=>1, :piyo=>2, :fuga=>3}

同名keyがあった場合、上書きします。
この点に気をつけないと意図しない挙動をする恐れがあるので気をつけてください。

{hoge: 1, piyo: 2}.merge!({fuga: 3, piyo: 4})
#=> {:hoge=>1, :piyo=>4, :fuga=>3}

前の記事で扱ったassert_valid_keysと組み合わせる事で
安全確実に処理本体へhashを渡す事ができます。
たとえばこんな感じ

def method(options={})
  options.assert_valid_keys(:foo, :bar)

  default_params = {foo: 1, bar: 2}

  tmp = get_outer_params
  default_params.merge!(tmp)

  method_body
end

private
def get_outer_params
  ##他所からparamを毟ってくる。I18とか。
end

def method_body
  ##受け取ったoptionsで何かする
end