使用字符串或符号创建哈希作为键

时间:2015-08-25 14:10:58

标签: ruby hash

我看到了一个ruby脚本,它定义了一个像这样的哈希数组:

boxes = [
  { :name => "playground",    :ip => "19" },
  { :name => "elkstack",      :ip => "22" },
  { :name => "audit",         :ip => "23" }
]

我不太确定这是否是定义哈希的正确方法。我认为你宁愿定义这样的哈希数组:

boxes = [
  { "name" => "playground",    "ip" => "19" },
  { "name" => "elkstack",      "ip" => "22" },
  { "name" => "audit",         "ip" => "23" }
]

你能说出哪一种是定义哈希的正确方法吗?它是否有副作用,你可能想避免或挑衅将这些哈希成员定义为符号?

1 个答案:

答案 0 :(得分:2)

两种方式都是正确的。在第一种情况下,散列键将是符号,在第二种情况下,它们将是字符串。

一般来说,使用符号作为哈希键是很常见的,因为它们的效率稍高一些,因为当您多次输入相同的符号时,它只会被分配一次,相反如果您键入相同的字符串N次,它将被分配N次。

事实上,它甚至还有一个捷径。

boxes = [
   { name: "playground",    ip: "19" },
   { name: "elkstack",      ip: "22" },
   { name: "audit",         ip: "23" }
]