-1

キーワードと定義を含むエントリ全体を追加できる次のブロックがあります。

class Dictionary

  def initialize
    @d = {}
  end

  def entries
    @d
  end

  def add(entry)
    (entry).each {|k,v=nil| 
      @d[k] = v
    }
  end

  def keywords
    @d.keys
  end

end

定義なしでキーワードを追加できるようにしたい (キーを追加するが、値を追加しない)。上記のブロックで v=nil を設定しようとしましたが、それでも失敗します。Rspecに対して実行したときに発生するエラーは次のとおりです。

Dictionary
  is empty when created
  can add whole entries with keyword and definition
  add keywords (without definition) (FAILED - 1)

Failures:

  1) Dictionary add keywords (without definition)
     Failure/Error: @d.add('fish')     
     NoMethodError:
      undefined method `each' for "fish":String
   # ./11_dictionary/dictionary.rb:13:in `add'
   # ./11_dictionary/dictionary_spec.rb:27:in `block (2 levels) in <top (required)>' 

最後に、パスする必要がある rspec テストを次に示します。

it 'add keywords (without definition)' do
  @d.add('fish')
  @d.entries.should == {'fish' => nil}
  @d.keywords.should == ['fish']
end
4

3 に答える 3

0

あなたはそれによって何を意味しました?

def add(entry)
  (entry).each {|k,v=nil|
    @d[k] = v
  }
end

単一の要素を渡すため、本体は単純に次のようになります。

def add(entry)
  @d[entry] = nil
end
于 2013-10-05T19:28:59.977 に答える
0
def add(key, value=nil)
  @d[key] = value
end

トリックを行う必要があります。

于 2013-10-05T20:37:11.973 に答える