【发布时间】:2015-05-27 16:26:16
【问题描述】:
如果 add 方法的参数“entry”是一个散列,我需要将它添加到 :entries 散列。如果“entry”是一个字符串,则需要将“entry”设置为哈希中的键,并将其值设置为 nil。我在下面有一个解决方案,但有更清洁的方法吗?
class Test
attr_accessor :entries
def initialize
@entries = {}
end
def add(entry)
if entry.is_a?(Hash)
entry.each do |word, definition|
@entries[word] = definition
end
else
@entries[entry] = nil
end
end
end
@test = Test.new
@test.add("the")
#{"the" => nil}
@test.add("the" => "one")
#{"the"=>"one"}
【问题讨论】:
-
也许你可以将“@entries”设置为Hash.new(nil),这样@entries的任意key的值都是nil,那么你添加entry就判断entry是否为Hash,并合并它
标签: ruby methods hash arguments