使用方法创建哈希

时间:2016-06-06 23:01:20

标签: ruby methods hash

我在创建建立新哈希的方法时遇到问题。我知道声明哈希肯定更容易,但是我需要创建一个方法。这是我到目前为止所持有的,它不断产生错误信息。

def create_new(hash_name)
hash_name = Hash.new 

end

这应该创建并清空哈希^

def add_item(hash_name, item_name, item_quantity)

hash_name[:item_name.to_sym] = item_quantity
end

我不断收到上述代码的错误消息^我正在尝试更新此哈希并使用方法添加新的键值对

p create_new("grocery_list")

这会创建一个新的空哈希^但是当我用下面的代码调用它时,哈希是未定义的

add_item(grocery_list, "pizza", "1")
 p grocery_list

2 个答案:

答案 0 :(得分:2)

如果你喜欢,你也可以把它变成一个班级。

class MyHash
  attr_reader :hash

  def initialize
    @hash = Hash.new
  end

  def [](key)
    self.hash[key]
  end

  def []=(key, value)
    self.hash[key.to_sym] = value
  end
end

grocery_list = MyHash.new
grocery_list['pizza'] = 1

> grocery_list.hash
=> {:pizza=>1}

答案 1 :(得分:1)

create_new方法中,您定义了一个hash_name局部变量。除了方法体之外,此变量不存在于任何位置。这似乎让你感到困惑。

您可以通过以下方式更好地表达您的意图:

def create_new
  Hash.new
end

def add_item(hash, key, value)
   hash[key.to_sym] = value
end

为了达到你想要做的事情,你必须将你的方法的结果存储在某种变量中才能使用它:

grocery_list = create_new # grocery_list is now a local variable

add_item(grocery_list, 'pizza', 1)