gpt4 book ai didi

ruby - 如何将键和值推送到带有 Ruby 的空哈希中?

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:30 25 4
gpt4 key购买 nike

我有一个字典类,希望能够使用“添加”方法将键(作为关键字)和值(作为定义)推送到空哈希中。我不明白如何在语法上写那个。我也包含了一个 RSPEC 文件。

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

R规范:

 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

感谢任何帮助。谢谢!

更新:谢谢戴夫牛顿的回复。我使用了你的代码并得到了这个错误:

错误:

 *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"*

最佳答案

Dictionaryinitialize 中实例化你的散列:

class Dictionary
def initialize
@hash = {}
end

def add(defs)
defs.each do |word, definition|
@hash[word] = definition
end
end
end

现在你没有哈希,直到你调用 entries,你没有。

条目返回 现有 哈希,而不是创建新哈希。

keywords 应该返回散列的键。

keyworddefinition 不需要访问器。这样的单数项在字典类中是没有意义的。您可能需要像 lookup(word) 这样的东西返回一个定义。

此外,您将单词转换为符号,但我不知道为什么——特别是因为您在规范中使用了字符串键。选择一个,虽然我不相信这是符号增加值(value)的情况。

请仔细考虑变量命名以提供尽可能多的上下文。

关于ruby - 如何将键和值推送到带有 Ruby 的空哈希中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com