无法弄清楚如何在Ruby中迭代键

时间:2015-01-24 15:33:29

标签: ruby loops

我有一个关于我正在做的事情的背景。像这样:

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

1 个答案:

答案 0 :(得分:1)

使用each_keys。虽然你也可以使用each

,但这是红宝石的方式
Context::CONTAINS.each_key { |k|
    puts k.to_s
}

to_s将符号转换为字符串。

Context::CONTAINS.keys只是each_key

的另一个别名