ScalaからDatastoreを更新したい
ScalaからApp EngineのDatastoreに書き込みたいんだけど、使いやすい文法はないものか? ここに直接書いてるから、文法は間違ってるかも?雰囲気だけ伝わればよし。
DSL風?
Entity.store("kind") {
p("name", "Taro"),
p("age", 10)
}
DSL風は嫌いではないけど、プロパティ名を毎回指定するのはどうなんだろ?と思う。KVSってそういうものだけど、もうちょっと楽したいよね?って意味で。
Java風?
class Entity {
val name:Option[Property[String]] = "name".p
val age = "age".p // 型推論でOption[Property[Int]]
val birthday = "date".p.index
}
val e = new Entity()
e.name = "Taro"
e.age = 10 // def age_=(value) = valueとかしておく必要ありか
e.birthday = Date(2001, 7, 15)
Datastore.put(e)
なんとなく、これにはしたくない。せっかくのScalaなんだし…という、感情的理由(^^;
trait利用
trait Person {
// val kind:String = "person" // ここに持たせる?
val name:Option[Property[String]]
val age:Option[Property[Int]]
}
val e = new Entity with Person
e.name = "Taro" // Property[String].valueに"Taro"を設定する or varにする
e.age = 10
Datastore.store("kind", e)
定義(trait)と実装(with)で分かれてるし、これはこれでありかも?と思ってる。 with使ったときのオーバーヘッドってどうなるんだろ?ってことを調べてない。
最近はこんなことも考えてる。