"value"} c = {:key=>"value"} 这些结果: a.has_key?("key") # => fals-6ren">
gpt4 book ai didi

ruby - 哈希 has_key?句法

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:36 27 4
gpt4 key购买 nike

我有三个哈希:

a = {key:"value"}
b = {"key"=>"value"}
c = {:key=>"value"}

这些结果:

a.has_key?("key") # => false
b.has_key?("key") # => true
c.has_key?("key") # => false

我的问题是:

  • 为什么?这是什么行为?
  • 如何使用相同的语法让 abc 返回 true他们?

最佳答案

有字符串,有符号。字符串不是符号。

这些散列包含一个符号作为键:

{key: "value"}
{:key => "value"}

这个散列包含一个字符串作为键:

{"key"=>"value"}

这就是为什么您的测试表现得像他们那样。

Rails 有一个 Hash 包装器,叫做 HashWithIndifferentAccess .如果您有其中之一,则可以通过字符串或符号访问值。但对于常规哈希,有区别。

require "active_support/core_ext"

h = {key: "value"}.with_indifferent_access

h.has_key?(:key) # => true
h.has_key?("key") # => true

关于ruby - 哈希 has_key?句法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com