Rubyでハッシュを使う時に

a={}
a["new"]+=1
とやるとa["new"]が最初はnilを返すのでエラーになるので
x="new"
a[x]=(a[x]?a[x]+=1:1)と書いていましたが

ハッシュの初期値を与えると回避できるというのを知りました。
a=Hash.new(0)
p a["new"]+=1

この「a=Hash.new(0)」というのを「a={}」のような{}を使って書く方法があれば
教えてください。


a={} の方が a=Hash.new()より簡単で書きやすくて好きなので、こちらで初期値を設定する方法を教えてください。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2007/11/20 01:30:43
  • 終了:2007/11/20 20:27:54

回答(2件)

id:lazarus No.1

らざるす回答回数6ベストアンサー獲得回数02007/11/20 20:13:14

http://www.pinkdragon.net/doc_lib/contents/ja/ruby_man/ddktdbg.h...

a{"new"=>1}

と書くのが普通です。

id:garyo

C:/DOCUME~1/mec/LOCALS~1/Temp/rbBD.tmp:1: syntax error, unexpected tASSOC, expecting '}'

a{"new"=>1}

^

シンタックスエラーですが。

あと、良く質問を読んでください。

a[x]=(a[x]?a[x]+=1:1)

このような場合にどうやって書きますか?

2007/11/20 20:20:03
id:pyopyopyo No.2

pyopyopyo回答回数340ベストアンサー獲得回数832007/11/20 20:15:46

ポイント70pt

Hash#defaultメソッドでデフォルト値を設定できます


たとえばこんな感じになります.

a={}
a.default=0

a["new"]+=1

p a["new"]

http://www.namaraii.com/rubytips/?%A5%CF%A5%C3%A5%B7%A5%E5

id:garyo

ありがとうございます。

これが良さそうですね。

2007/11/20 20:27:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません