代码之家  ›  专栏  ›  技术社区  ›  stevec Zxeenu

使用类字符串的键定义哈希,而不使用哈希火箭?

  •  0
  • stevec Zxeenu  · 技术社区  · 3 年前

    可以使用哈希火箭语法定义哈希(键为class String),如下所示:

    h = {:name => 'Charles', "name" => 'John'}
    

    有没有办法用另一种符号来定义它?

    我试过:

    a = {name: "Charles", "name": "John"}
    (irb):14: warning: key :name is duplicated and overwritten on line 14
    a
    # => {:name=>"John"}
    

    还要注意的是,在没有任何重写的情况下,我仍然无法找到一种将键设置为类字符串的方法:

    b = {"name": "John"}
    b
    # => {:name=>"John"} # "name" (String) is stored as :name (Symbol)
    

    顺便说一句,使用更现代的散列符号(不使用散列火箭的符号)不可能用任何字符串键定义散列。有没有办法,或者应该 => 使用类字符串键定义哈希时是否使用了火箭?

    0 回复  |  直到 3 年前
        1
  •  2
  •   Michael B    3 年前

    这个 documentation 这一点非常清楚:

    哈希数据的旧语法使用哈希火箭=>:

    h = {:foo => 0, :bar => 1, :baz => 2} h # => {:foo=>0, :bar=>1,
    > :baz=>2}
    

    或者, 但只适用于作为符号的哈希键 ,你可以使用 更新的JSON风格语法。。。