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」をハッシュに正常にマップし、ハッシュからのキーと値を使用して test を設定します。

これは、事前定義された配列に対して常に機能します。ただし、文字列 (この場合は文字列 "df") から配列に追加するか、文字列から配列を作成すると、配列値がハッシュにマップされなくなり、理由がわかりません。配列に文字列値を設定するさまざまな方法を調べましたが、毎回同じ問題が発生します。

私が見る限り、「df」もハッシュにマッピングする必要があります。

どんな助けでも大歓迎です。

4

1 に答える 1

4

string.split(//)これは、配列を1 つのオブジェクトとしてプッシュしたため、結果としてarray数値の中に配列要素が 1 つあるためです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 に答える