我有一个字典类,希望能够使用“add”方法将键(作为关键词)和值(作为定义)推入空哈希表中。我不知道如何在语法上编写它。我也包含了一个RSPEC文件。
ruby:
当我使用 @hash[word.to_sym] = defintion 将 'word' 转换为符号时,我会得到一个不同的错误。
ruby:
class Dictionary
attr_accessor :keyword, :definition
def entries
@hash = {}
end
def add(options)
options.map do |keyword, definition|
@hash[keyword.to_sym] = definition
end
end
end
Rspec:
require 'dictionary'
describe Dictionary do
before do
@d = Dictionary.new
end
it 'can add whole entries with keyword and definition' do
@d.add('fish' => 'aquatic animal')
@d.entries.should == {'fish' => 'aquatic animal'}
@d.keywords.should == ['fish']
end
非常感谢您的帮助。谢谢!
更新: 感谢Dave Newton的回复。我使用了您的代码,但出现了以下错误:
错误:
*Failure/Error: @d.keywords.should == ['fish']
NoMethodError:
undefined method `keywords' for #<Dictionary:0x007fb0c31bd458
@hash={"fish"=>"aquatic animal"}>*
当我使用 @hash[word.to_sym] = defintion 将 'word' 转换为符号时,我会得到一个不同的错误。
*Failure/Error: @d.entries.should == {'fish' => 'aquatic animal'}
expected: {"fish"=>"aquatic animal"}
got: {:fish=>"aquatic animal"} (using ==)
Diff:
@@ -1,2 +1,2 @@
-"fish" => "aquatic animal"
+:fish => "aquatic animal"*