ごとけんです
In message "[ruby-list:17834] instead of assoc method"
on 99/10/19, Akihiro Yamauchi <aygoofy / kt.rim.or.jp> writes:
>ユーザーからの投票を配列votesにいれ、
>データのファイルが
>aaa,3
>ccc,2
>...
>といった単純なものだとして、
>ユーザーからの投票がデータにあれば投票数を1足して、データになければ新
>しいエントリーを作る、という感じのものです。
開催中の icon competition では、ファイルに保存する必要がある
ので、dbm を使ってます。dbmはハッシュのように使えるので便利
です。
メインの部分はこんな感じ:
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] # 不要かも
db[v] = (db[v].to_i + 1).to_s # .to_s は不要かも
end
ensure
db.close
end
内容を表示するには、
DBM.open("hoge").each{|k,v| p [k,v]}
などとします。実際は排他制御などもやってます。
dbmでなくHashとMarshalを組み合わせるという手もあるでしょう。
-- gotoken