在ruby hash中使用常量作为键

Max*_*ler 3 ruby hash

假设我有2个字符串常量

KEY1 = "Hello"
KEY2 = "World"
Run Code Online (Sandbox Code Playgroud)

我想使用这些常量作为键值创建一个哈希.

尝试这样的事情:

stories = {
  KEY1: { title: "The epic run" },
  KEY2: { title: "The epic fail" }
}
Run Code Online (Sandbox Code Playgroud)

似乎没有用

stories.inspect
#=> "{:KEY1=>{:title=>\"The epic run\"}, :KEY2=>{:title=>\"The epic fail\"}}"
Run Code Online (Sandbox Code Playgroud)

stories[KEY1]显然行不通.

And*_*eko 11

KEY1:是语法糖:KEY1 =>,所以你实际上有符号作为键,而不是常量.

要将实际对象作为键,请使用散列火箭表示法:

stories = {
  KEY1 => { title: "The epic run" },
  KEY2 => { title: "The epic fail" }
}
stories[KEY1]
#=> {:title=>"The epic run"}
Run Code Online (Sandbox Code Playgroud)