人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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()より簡単で書きやすくて好きなので、こちらで初期値を設定する方法を教えてください。

●質問者: garyo
●カテゴリ:インターネット ウェブ制作
✍キーワード:H.N nil Ruby エラー ハッシュ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● らざるす
●0ポイント

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

a{"new"=>1}

と書くのが普通です。

◎質問者からの返答

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)

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


2 ● pyopyopyo
●70ポイント

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

◎質問者からの返答

ありがとうございます。

これが良さそうですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ