gpt4 book ai didi

ruby-on-rails - 需要知道如何在 ruby​​ 中处理散列键

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:11 25 4
gpt4 key购买 nike

我正在从事 ruby​​ rails 项目。我正在使用 Rails 2.3.4 和 ruby​​ 1.8.7 。我有一个名为 User 的模型。

我在初始化程序中有以下代码

$h =  {User => 'I am user' }

在 Controller 中我有以下代码

$h[User]

当我第一次执行 h[User] 时,我得到了正确的结果。但是,如果我刷新页面,则会得到 nil 值。

我认为这就是正在发生的事情。

第一次加载 User 类时,我得到了正确的值。但是,当我刷新页面时,这次 Controller 为 $h[User] 返回 nil 值。

因为 rails 在刷新页面时会卸载所有常量,所以似乎加载了一个新的 User 类。此 User 类与在初始化程序中用作键的 User 不同。

我知道使用 User 类是一种不好的做法。我的问题是有人可以向我解释当 User 类用作 key 时,ruby 在内部如何存储 key 。 ruby 是否使用 User 的 object_id 作为键?我

最佳答案

Hash 在用作键的任何对象上调用 hash 方法。是的,您关于为什么您的代码无法正常工作的理论是正确的。

在 Rails 控制台中试试这个:

User.hash # => 215678765 (or whatever)
reload!
User.hash # => 215876673

重新加载类更改了 hash 方法返回的值,这意味着在 Hash 中使用时它不再是相同的键。

使用 :user 或每次都会解析为相同 key 的其他内容。

关于ruby-on-rails - 需要知道如何在 ruby​​ 中处理散列键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1718745/

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