在方法中将散列参数或字符串参数添加到散列(Ruby)

时间:2015-05-27 16:26:17

标签: ruby methods hash arguments

如果方法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"}

1 个答案:

答案 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