1

我对 Ruby 和一般的编程非常陌生。首先,我有以下代码:

hashy = {"a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 6, "f" => 6}
array = ["a", "b", "c"]
string = "df"
array.push (string.split(//))
puts array
test = array.map {|a| hashy.select {|k,v| a == k}}

puts test

此代码成功地将“a”、“b”和“c”映射到散列,并使用散列中的键和值填充测试。

这始终适用于预定义的数组。但是,如果我从字符串添加到数组(在本例中为字符串“df”,或从字符串创建数组,它不再将数组值映射到哈希,我不明白为什么。我已经研究了用字符串值填充数组的不同方法,但每次都会遇到同样的问题。

据我所见,“df”也应该映射到散列。

任何帮助将不胜感激。

4

1 回答 1

4

这是因为您将string.split(//)数组array作为一个对象推送,因此结果中的数字中有一个数组元素array

array = ["a", "b", "c"]
string = "df"
array.push (string.split(//))
 => ["a", "b", "c", ["d", "f"]]

为避免这种情况,您可以使用数组连接,例如

array = ["a", "b", "c"]
string = "df"
array += string.split(//)
=> ["a", "b", "c", "d", "f"]
于 2012-05-17T12:30:01.420 回答