22

Hash#fetchどのような状況で使用したいかわかりませんHash#[]。それが有効に役立つ一般的なシナリオはありますか?

4

3 に答える 3

25

3 つの主な用途:

  1. 値が必須の場合、つまりデフォルトがない場合:

    options.fetch(:repeat).times{...}
    

    素敵なエラー メッセージも表示されます。

    key not found: :repeat
    
  2. 値がnilorfalseで、デフォルトがそれ以外の場合:

    if (doit = options.fetch(:repeat, 1))
      doit.times{...}
    else
      # options[:repeat] is set to nil or false, do something else maybe
    end
    
  3. ハッシュのdefault/を使いたくない場合:default_proc

    options = Hash.new(42)
    options[:foo] || :default # => 42
    options.fetch(:foo, :default) # => :default
    
于 2013-01-30T01:43:49.887 に答える
6

デフォルト値を取得したり、キーが存在しないときにエラーを発生させたりする場合にfetch便利です。fetchデフォルト値をハッシュに設定しなくてもこれを行うことは可能ですが、を使用fetchすると、その場で行うことができます。

于 2013-01-30T01:27:48.703 に答える