Ruby 如何将散列的一部分分配给另一个变量?

Ruby 如何将散列的一部分分配给另一个变量?,ruby,Ruby,尝试将has的一部分分配给另一个变量。我有一份杂烩。比如: hash = { "cupcake" => { "a" => 1 }, "muffin" => { "b" => 2 } } cupcake = hash["cupcake"] 当我做以下事情时: hash = { "cupcake" => { "a" => 1 }, "muffin" =>

尝试将has的一部分分配给另一个变量。我有一份杂烩。比如:

hash = {
    "cupcake" => {
        "a" => 1
    },
    "muffin" => {
        "b" => 2
    }
}
cupcake = hash["cupcake"]
当我做以下事情时:

hash = {
    "cupcake" => {
        "a" => 1
    },
    "muffin" => {
        "b" => 2
    }
}
cupcake = hash["cupcake"]

cupcake在此代码后为nil

如果需要字符串键,则必须使用此语法

hash = {
    "cupcake" => {
        "a" => 1
    },
    "muffin" => {
        "b" => 2
    }
}
带冒号的语法用于符号键

hash = {
  cupcake: {
    a: 1
  },
  muffin: {
    b: 2
  }
}

cupcake = hash[:cupcake]

这不应该起作用,它不是有效的Ruby代码。我在irb中编辑后尝试了你的代码,它起作用了fine@Ursus弄明白为什么它不起作用了。是其他代码中的一个bug,它创建了其他人编写的哈希。我以前从未使用过ruby,所以我想可能不允许复制子哈希。谢谢你的帮助。没问题,我知道这段代码很好:)是的,
“a:1
a:1
是相同的,尽管这是违反直觉的。第一块代码不是我的实际代码,我只是当场写了它(用类似json的表示法来展示我想要做的事情。我将编辑原始帖子。