如何在 Ruby 中创建哈希数组

发布于 2024-10-15 06:17:34 字数 318 浏览 10 评论 0原文

ruby 新手,我正在尝试创建一个哈希数组(或者我是否将其倒退?)

def collection
  hash = { "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end

@collection 没有显示位置 0 中对象的名字...我做错了什么?

提前致谢!

New to ruby and I'm trying to create an array of hashes (or do I have it backwards?)

def collection
  hash = { "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end

@collection does not show the firstname for the object in position 0... What am I doing wrong?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

扮仙女 2024-10-22 06:17:35

您正在使用 Symbol 作为使用 String 对象作为键的 Hash 对象的索引,因此只需执行以下操作:

@collection = array[0]["firstname"]

我鼓励您使用 Symbol 作为 Hash 键而不是 String,因为 Symbol 被缓存,因此效率更高,所以这将是一个更好的解决方案:

def collection
  hash = { :firstname => "Mark", :lastname => "Martin", :age => 24, :gender => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end

You're using a Symbol as the index into the Hash object that uses String objects as keys, so simply do this:

@collection = array[0]["firstname"]

I would encourage you to use Symbols as Hash keys rather than Strings because Symbols are cached, and therefore more efficient, so this would be a better solution:

def collection
  hash = { :firstname => "Mark", :lastname => "Martin", :age => 24, :gender => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end
月朦胧 2024-10-22 06:17:35

您已将散列的键定义为String。但随后您尝试将其引用为 Symbol。那是行不通的。

尝试

@collection = array[0]["firstname"]

You have defined the keys of your hash as String. But then you are trying to reference it as Symbol. That won't work that way.

Try

@collection = array[0]["firstname"]
酸甜透明夹心 2024-10-22 06:17:35

你可以这样做:

@collection = [{ "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }]

You can do this:

@collection = [{ "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文