0

Hashクラスで遊ぼうとしています。ハッシュのキーを小文字にする私のアプローチは次のとおりです。

myhash.map { |k, v| k.downcase, v }

しかし、私は得る:

SyntaxError: (irb):11: syntax error, unexpected '}', expecting '='

しかし、もしそうなら:

myhash.map { |k, v| [k.downcase, v] }

配列内にある場合でも、正しく小文字化されます。なぜそれをさせてくれないのですか

myhash.map { |k, v| k.downcase, v }
4

4 に答える 4

1

#mapクラスの#eachメソッドを使用して反復し、(各位置のキーと値)Hashを持つ 2 つの値を生成します。#eachただし、それぞれの結果は必ず配列になります。幸いなことに、配列をハッシュに戻す方法があります。

キーをダウンケースできるようにしたい場合は、圧縮された配列からハッシュへの変換方法を利用できますHash[]

Hash[myhash.map { |k, v| [k.downcase, v] }]

そうすれば、あなたが望む答えが得られます。

于 2013-11-13T00:51:35.843 に答える
0

エラーメッセージを読んでください。あなたが持っていSyntaxErrorます。あなたのコードは構文的にも有効ではありません。実行どころか、コンパイルすらできません。downcase写真にも入りません。

foo, bar

は有効な Ruby 式ではありません。これはHashorとは関係ありませんdowncaseSyntaxError次のようなことを試してみると、 a も得られます。

1, 1
于 2013-11-13T10:26:43.797 に答える