gpt4 book ai didi

ruby-1.9.3 - 在 Ruby 中如何比较包含不同键格式(一些字符串,一些符号)的哈希是否相等?

转载 作者:行者123 更新时间:2023-12-02 00:23:44 25 4
gpt4 key购买 nike

我使用的是 ruby​​ 1.9.3,我需要比较两个具有不同 key 格式的哈希值。例如,我希望以下两个哈希的相等性为真:

hash_1 = {:date => 2011-11-01, :value => 12}
hash_2 = {"date" => 2011-11-01, "value" => 12}

关于如何在一行代码中比较这两个哈希有什么想法吗?

最佳答案

将具有符号的散列上的键字符串化:

 > hash_1.stringify_keys
=> {"date"=>"2011-11-01", "value"=>12}

然后比较。因此,您的答案是:

 > hash_1.stringify_keys == hash_2    
=> true

你也可以反过来做,在 hash_2 中符号化字符串键,而不是在 hash_1 中将它们字符串化:

 > hash_1 == hash_2.symbolize_keys
=> true

如果您希望字符串化/符号化成为永久性更改,请使用带有 ! 的版本:stringify_keys!symbolize_keys!分别

 > hash_1.stringify_keys!                # <- Permanently changes the keys in hash_1 into Strings
=> {"date"=>"2011-11-01", "value"=>12} # as opposed to temporarily changing them for comparison

引用: http://as.rubyonrails.org/classes/HashWithIndifferentAccess.html

另外,我猜你是想在日期周围加上引号......

:date => "2011-11-01"

...或者,将它们显式实例化为 Date 对象?

:date => Date.new("2011-11-01")

您现在写入日期的方式将 :date 设置为 2011-11-01 这些目前被解释为一系列整数,它们之间有减法。

即:

 > date = 2011-11-01
=> 1999 # <- integer value of 2011, minus 11, minus 1

关于ruby-1.9.3 - 在 Ruby 中如何比较包含不同键格式(一些字符串,一些符号)的哈希是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772127/

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