ごとけんです

ごそごそと訂正に来ました ^^;;

In message "[ruby-list:17839] Re: instead of assoc method"
    on 99/10/20, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
>メインの部分はこんな感じ: 
>
>  require "dbm"
>  DBNAME = "hoge"  # prefix of db file
>
>  votes = ["aaa", "bbb"]
>
>  db = DBM.open(DBNAME)
>  begin
>    db["aaa"] = 3
>    db["ccc"] = 2
>
>    votes.each do |v| 
>      db[v] = "0" unless db.has_key?[v]  # 不要かも

うえでは = 3 とかしておきながらここで = "0" はナニですね。
DBM#[]= は代入前に to_s してくれるようです。

それから has_key?[v] ではなく has_key?(0) です。

また、現状では登録されてないキーの参照は nil が返り、かつ 
nil.to_i == 0 なので、やっぱり、
  db[v] = "0" unless db.has_key?(v)
は不要です。

ただ nil.to_i == 0 という仕様が将来どうなるかは分かりません。

-- gotoken