メモです。今、rubyのおさらいを兼ねて「作りながら学ぶRuby入門」をざーっとフォローしているのですが、そこで出てきたPstoreの使い方のページ(176P)に以下のコードがあります。
require 'pstore' db = PStore.new('dbfile') db.transaction do db["drink"] = "coffee" db["fruits"] = ["apple", "banana"] end #Pstoreに保存されるのは、transactionメソッドを抜けるとき
こういう使い方を自作クラスに組み込むとすればどう作るか。。。ちょっと作ってみました。ファイルアクセスはありませんがつけようと思えばつけられます。こんな感じで書いているんでしょうかね?(全く違っていたらゴメンナサイ!)PStoreのこれをDSLと呼んでいいのかはわかりませんが、やはりカッコイイですね。。。私がちょっとJavaを書いている限りではこういう発想はでてきません。
class PStore_modoki attr_accessor :data def initialize @data = {} end def transaction yield end def []=(k, v) @data[k] = v end def to_s "#@data" end end p = PStore_modoki.new p.transaction { p["param1"] = 123 p["param2"] = "abc" } puts p