我在尝试弄清楚如何在ruby中使用散列中的数组时遇到了一个问题。我正在运行一个命令( linux上的最后一个命令,如果您一定要知道的话),捕获其中的输出,并尝试将出现在此日志中的每个用户的唯一数据插入到散列中,每个用户都有自己的数组。示例如下:
hash = {
"userbob1" => ["Bob User", 10, "10.10.2016"],
"userjim2" => ["Jim User", 4, "9.16.16"]
}
以此类推。
我已经能够成功地将数组作为一个整体插入到散列中,但是如何检索该数组的特定值,或者在将数组添加到散列之后向其添加值呢?
我会想象这样的情况:
hash["userbob1"[0]] #=> "Bob User"
发布于 2016-11-30 20:25:15
您必须按顺序浏览结构的每个部分,并记住代码的每个部分都是按照从左到右的顺序进行计算的:
hash["userbob1"][0]
您所做的是请求"userbob1"[0]
,它的计算结果当然是"u"
,然后将该值用作散列键,这是错误的。
只需将每个部分视为可以计算和附加的东西:
hash
hash["userbob1"]
hash["userbob1"][0]
发布于 2016-11-30 20:39:51
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处的值。
arr[1]
#=> 10
,它与
hash["userbob1"][1]
追加数组
在数组后追加"cat"
,
arr << "cat"
hash
#=> {"userbob1"=>["Bob User", 10, "10.10.2016", "cat"],
# "userjim2"=>["Jim User", 4, "9.16.16"]}
,它与
hash["userbob1"] << "cat"
或
hash["userbob1"].push("cat")
用另一个数组替换该数组
arr.replace [1,2,3]
hash
#=> {"userbob1"=>[1, 2, 3], "userjim2"=>["Jim User", 4, "9.16.16"]}
,它与
hash["userbob1"].replace [1,2,3]
或
hash["userbob1"] = [1,2,3]
#=> [1,2,3]
hash
#=> {"userbob1"=>[1, 2, 3], "userjim2"=>["Jim User", 4, "9.16.16"]}
备注
arr = [1,2,3]
hash
#=> {"userbob1"=>["Bob User", 10, "10.10.2016"],
# "userjim2"=>["Jim User", 4, "9.16.16"]}
(散列不会更改。)
反转数组
arr.reverse!
hash
#=> {"userbob1"=>["10.10.2016", 10, "Bob User"],
# "userjim2"=>["Jim User", 4, "9.16.16"]}
,它与
hash["userbob1"].reverse!
备注
arr.reverse
hash
#=> {"userbob1"=>["Bob User", 10, "10.10.2016"],
# "userjim2"=>["Jim User", 4, "9.16.16"]}
散列是不变的,因为arr.reverse
返回了反转的数组,但没有改变它。
发布于 2016-11-30 20:25:40
您的语法几乎是正确的。尝试散列“userbob1”
https://stackoverflow.com/questions/40897381
复制相似问题