gpt4 book ai didi

ruby - 如何创建一个将散列(有或没有指定值)作为参数的方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:43 26 4
gpt4 key购买 nike

所以我首先要完成测试,但有点卡住了。到目前为止,这是我的代码:

class Dictionary 
attr_accessor :entries, :keywords, :item

def initialize
@entries = {}
end

def add(item)
item.each do |words, definition|
@entries[words] = definition
end
end

def keywords
@entries.keys
end

end#class

我卡在了这里的 rspec 测试中:

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

我如何切换我的 add 方法来接受键/值对,或者只接受一个值为 nil 的键?第一个测试指定散列在创建时为空,所以我不能在那里给它默认值。

最佳答案

可以检查传递给 add 方法的参数类型。是否不是Enumerable ,这显然是包含在 ArrayHashes 等中的 mixin,只需将其值分配给 nil:

def add(item)
case item
when Enumerable
item.each do |words, definition|
@entries[words] = definition
end
else
@entries[item] = nil
end
end

请注意 case 使用“case equality ” 来检查参数类型。

关于ruby - 如何创建一个将散列(有或没有指定值)作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575367/

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