3

*argsデフォルトのオプションハッシュとマージする必要があるハッシュを受け入れるメソッドがあります:

def bt_navbar(*args, &block)
  options = {
    inverse: false,
    fixed: false,
  }.with_indifferent_access.merge!(args.extract_options!)
  # ...
end

keysメソッドのユーザーが使用するのが好きなのかstrings、オプションを渡すときに使用するのかわからないため、 を使用します[].with_indifferent_access

これは良いパターンですか、それとももっと確立されたより良いパターンがありますか?

4

1 に答える 1

2

2 つの位置引数があるとします。これは私が書くものです:

def bt_navbar(arg1, arg2, options = {}, &block)
  options.reverse_update({
    inverse: false,
    fixed: false,
  })

  # body
end
  1. 文字列キーをサポートする必要はありません。
  2. Hash#reverse_update*active_support* の一部ですが、独自のメソッドを実装するのは簡単です (おそらくdefaults? のような名前で)。
于 2012-09-13T13:57:15.073 に答える