首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用散列中的多个数组- Ruby

使用散列中的多个数组- Ruby
EN

Stack Overflow用户
提问于 2016-12-01 04:16:47
回答 3查看 306关注 0票数 1

我在尝试弄清楚如何在ruby中使用散列中的数组时遇到了一个问题。我正在运行一个命令( linux上的最后一个命令,如果您一定要知道的话),捕获其中的输出,并尝试将出现在此日志中的每个用户的唯一数据插入到散列中,每个用户都有自己的数组。示例如下:

代码语言:javascript
代码运行次数:0
运行
复制
hash = {
  "userbob1" => ["Bob User", 10, "10.10.2016"],
  "userjim2" => ["Jim User", 4, "9.16.16"]
}

以此类推。

我已经能够成功地将数组作为一个整体插入到散列中,但是如何检索该数组的特定值,或者在将数组添加到散列之后向其添加值呢?

我会想象这样的情况:

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"[0]]  #=> "Bob User"
EN

回答 3

Stack Overflow用户

发布于 2016-12-01 04:25:15

您必须按顺序浏览结构的每个部分,并记住代码的每个部分都是按照从左到右的顺序进行计算的:

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"][0]

您所做的是请求"userbob1"[0],它的计算结果当然是"u",然后将该值用作散列键,这是错误的。

只需将每个部分视为可以计算和附加的东西:

代码语言:javascript
代码运行次数:0
运行
复制
hash
hash["userbob1"]
hash["userbob1"][0]
票数 1
EN

Stack Overflow用户

发布于 2016-12-01 04:39:51

代码语言:javascript
代码运行次数:0
运行
复制
hash = { "userbob1" => ["Bob User", 10, "10.10.2016"],
         "userjim2" => ["Jim User", 4, "9.16.16"] }

arr = hash["userbob1"]
  #=> ["Bob User", 10, "10.10.2016"] 

从数组中检索值

检索索引% 1处的值。

代码语言:javascript
代码运行次数:0
运行
复制
arr[1]
  #=> 10 

,它与

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"][1]

追加数组

在数组后追加"cat"

代码语言:javascript
代码运行次数:0
运行
复制
arr << "cat"
hash
  #=> {"userbob1"=>["Bob User", 10, "10.10.2016", "cat"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]} 

,它与

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"] << "cat"

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"].push("cat")

用另一个数组替换该数组

代码语言:javascript
代码运行次数:0
运行
复制
arr.replace [1,2,3]
hash
  #=> {"userbob1"=>[1, 2, 3], "userjim2"=>["Jim User", 4, "9.16.16"]} 

,它与

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"].replace [1,2,3]

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"] = [1,2,3]
  #=> [1,2,3]
hash
  #=> {"userbob1"=>[1, 2, 3], "userjim2"=>["Jim User", 4, "9.16.16"]} 

备注

代码语言:javascript
代码运行次数:0
运行
复制
arr = [1,2,3]
hash
  #=> {"userbob1"=>["Bob User", 10, "10.10.2016"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]}

(散列不会更改。)

反转数组

代码语言:javascript
代码运行次数:0
运行
复制
arr.reverse!
hash
  #=> {"userbob1"=>["10.10.2016", 10, "Bob User"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]} 

,它与

代码语言:javascript
代码运行次数:0
运行
复制
hash["userbob1"].reverse!

备注

代码语言:javascript
代码运行次数:0
运行
复制
arr.reverse
hash
  #=> {"userbob1"=>["Bob User", 10, "10.10.2016"],
  #    "userjim2"=>["Jim User", 4, "9.16.16"]}

散列是不变的,因为arr.reverse返回了反转的数组,但没有改变它。

票数 1
EN

Stack Overflow用户

发布于 2016-12-01 04:25:40

您的语法几乎是正确的。尝试散列“userbob1”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40897381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档