image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ:プログラミング言語の選び方, Android開発公募で見事賞金を射止めた受賞者50人のリスト, etc... | トップページ | ピックアップ:リーダーシップの5原則を考える, mixiへの書き込みで即日解雇, etc... »

2008-05-16

ruby の Hash の初期値

俺 は、今日 こんなコードを書いたのだ。
* a = {}
  . . .
  a["new] += 1

ああ、でも これは実行時にエラーになる。
"nil に対しては += 1 は出来ない!" というエラーだ。
新しい key については a[key] は 0 でなく、nil  なのだ。

そして、エラーを回避するために、次のようにした。
* a = {}
   . . .
   a["new"] ||= 0
   a["new] += 1
でも 代入文が2つ続いているようにみえるのは気持ちが悪い!

http://q.hatena.ne.jp/1195489904
では Hash の初期値について、同様の悩みを持った方の質疑のページがある。
そこでは 次のような書き方が記されている。

* a = {}
  x="new"
  a[x]=(a[x]?a[x]+=1:1)

* a=Hash.new(0)
  a["new"]+=1

* a={}
  a.default = 0  #keyに対応するvalueが無いときの初期値を0にする
  a["new"]+=1

* a = {}
  a["new"] ||= 0  #a["new"] = a["new"] ? 0 と同じ。nilなら0にする
  a["new"] += 1

他にはどんなものがあるんだろう。
そして、ruby らしいエレガントな書き方は?

http://blog.livedoor.jp/takaaki_bb/archives/50607824.html
ここにも同じことが述べられているなぁ

戯れに
a = {}(0) なんてしてみたが、シンタックスエラーになった。

# 俺は 空の Hash をつくるのは Hash.new よりは {} と書きたいのだ!

« ピックアップ:プログラミング言語の選び方, Android開発公募で見事賞金を射止めた受賞者50人のリスト, etc... | トップページ | ピックアップ:リーダーシップの5原則を考える, mixiへの書き込みで即日解雇, etc... »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/41227880

この記事へのトラックバック一覧です: ruby の Hash の初期値:

« ピックアップ:プログラミング言語の選び方, Android開発公募で見事賞金を射止めた受賞者50人のリスト, etc... | トップページ | ピックアップ:リーダーシップの5原則を考える, mixiへの書き込みで即日解雇, etc... »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク