如果方法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"}
答案 0 :(得分:0)
我重构了代码:
class Test
attr_accessor :entries
def initialize
@entries = {}
end
def add(entry)
entry.is_a?(Hash) ? @entries.merge!(entry) : @entries[entry] = nil
end
end