无法弄清楚如何遍历 Ruby 中的键

Can't figure out how to iterate through keys in Ruby

我有我正在做的会话的上下文。像这样:

class Context
    CONTAINS = {}
end

我一直这样成功使用它:

Context::CONTAINS[:alpha] = "exampleA"
Context::CONTAINS[:beta] = "exampleB"

但是 :alpha在代码运行的某些时候可能不包含任何内容。我试图通过以下方式遍历所有内容:

Context::CONTAINS.each { |x| puts x }

但这不起作用我得到:

-:8:in `[]=': can't convert Symbol into Integer (TypeError)

我不知道如何遍历它以仅检索实际拥有某些东西并使用它们的 :keys

使用each_keys。这是 ruby 的实现方式,但您也可以使用 each

Context::CONTAINS.each_key { |k|
    puts k.to_s
}

to_s 将符号转换为字符串。

Context::CONTAINS.keys 只是 each_key

的另一个别名