gpt4 book ai didi

ruby - 使用整数作为散列键

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

在 Ruby 哈希中使用整数作为键是否合适?

文档中的每个示例都显示了一个字符串或符号被用作键,但从来没有一个整数。

在内部,整数会以某种方式转换为字符串吗?我看到了一些关于这个主题的相互矛盾的信息。

换句话说,使用整数键来哈希有什么明显的缺点吗?

最佳答案

其他查看此处答案的人可能会发现当您在 Ruby hash 中使用整数作为符号键时会发生异常会很有趣{符号:值}

hash = {1: 'one'} # will not work  
hash = {1 => 'one'} # will work

要求的解释:

第一个示例失败的最简单答案可能是 to_sym 不是为 Fixnum 实现的方法。整数。

为了更深入地解释为什么会这样,使用符号的主要好处之一是两个符号实际上是“同一个对象”。或者至少它们共享相同的对象 ID。

:foo.object_id == :foo.object_id
=> true

相同的字符串不共享相同的对象,因此不共享相同的对象 ID。

"foo".object_id == "foo".object_id
=> false

与符号一样,相同的 Fixnum 整数将具有相同的对象 ID。因此,您真的不需要将它们转换为符号。

one = 1
=> 1
uno = 1
=> 1
one.object_id
=> 3
one.object_id == uno.object_id
=> true

关于ruby - 使用整数作为散列键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694317/

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