おそらく動的型が必要です:
http://www.scala-lang.org/api/current/index.html#scala.Dynamic
Scala 2.10 での動的型の追加につながる SIP: http://docs.scala-lang.org/sips/pending/type-dynamic.html
動的なフィールド解決を使用してオブジェクトを作成できる簡単な例を次に示します。
class MapBacked(initial: (String, Any)*) extends Dynamic {
private val fields = mutable.HashMap[String, Any](initial: _*)
// x.field translates to x.selectDynamic(field)
def selectDynamic(field: String): Any = fields(field)
// x.field = value translates to x.updateDynamic(field)(value)
def updateDynamic(field: String)(arg: Any) = { fields(field) = arg }
}
使用法:
val x = new MapBacked("a" -> 1, "b" -> 2)
println(x.a) //prints 1
x.c = 42
println(x.c) //prints 42
メソッドを定義することで、動的に解決されるメソッドを定義することもできますapplyDynamic
。