コマンドデザインパターンを実装するクラスを作成しました。
class MyCommand[-T, +R](val name: String, val execute: T => R)
、2つのコマンドを準備し、MutableListに保存しました。
val commands = new mutable.MutableList[MyCommand[Nothing, Any]]
commands += new MyCommand[String, String]("lower", s => s.toLowerCase())
commands += new MyCommand[Date, Long]("time", d => d.getTime)
次に、実行する2つのデータがあります。
val data = Array("StRiNG", new Date())
私にとっての問題は、どのデータムがコマンドに適用できるかを判断する方法がわからないことです。
data.foreach {
d => commands.foreach {
c =>
// println(c.execute(d)) if d is applicable to c.execute().
}
}
私が試したのは型指定とのパターンマッチングですが、構文エラーが発生します。
c.execute match {
case m: (d.getClass => Any) => println(c.execute(d))
}
助けて :(