2

Ruby1.9.2の新しいハッシュ構文には奇妙な問題があります。1.9.2でオブジェクトをキーとしてハッシュに入れるにはどうすればよいですか?

1.8.7ハッシュでは、次のように機能します。

a="b" 
{"a" => "some",a => "another value",:a => "3rd value"}

しかし、1.9.2では>できません(または、私が間違っている場合はどうすればよいですか? ")

1.9.2ハッシュ:

{a: "some"} =>  {:a=>"s"} #it convert to old hash format

しかし

a="a" 
{a: "..."} # This doesn't work

{"a": "some value"} => syntax error, unexpected '}', expecting $end
from /home/naveed/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'

{1: "s"} =>

SyntaxError: (irb):11: syntax error, unexpected ':', expecting tASSOC {1: "s"}
4

2 に答える 2

6

Ruby 1.9では、キーとして使用される: 記号の後にのみコロンを付けることができます。

=>シンボルを含め、どのオブジェクトでも矢印を使用できます。

于 2012-04-24T08:00:53.223 に答える
3

別の言い方をすれば、新しい機能は新しい一般的なハッシュ構文ではなく、キーがシンボルリテラルであるハッシュを記述するための特定の調整です。{a: 1}のショートカットで{:a => 1}あり、それだけです。キーとして他のものがある場合は、通常の構文を使用する必要があります。

于 2012-05-15T02:33:12.720 に答える