我想从函数返回一个类型。例如:
class Super
case class One(a: Int) extends Super
case class Two(b: Float) extends Super
case class Unknown extends Super
def decide(criterion: String): ??? = {
criterion match {
case "one" => One
case "two" => Two
case _ => Unknown
}
}
所以我想返回类型本身,将其存储在 Map 中,以便以后可以在某处应用它:
val test = Buffer(
("ahaha" -> "one")
("ohoho" -> "two")
("lalala" -> "one")
)
var map = scala.collection.mutable.Map[String, Super]()
test.map {pair =>
map(pair._1) = decide(pair._2)
}
所以以后我可以喜欢:
def act(code: String) {
map(code) match {
case One => doSmth[One]()
case Two => doSmth[Two]()
case _ => doNothing()
}
}
我知道某些部分,例如案例类的未使用参数,在这里可能看起来很奇怪,但这就是我工作的环境中的情况,这个例子很完整,因为我不确定如果我这样做是否会有所不同拿走东西……
那么我怎样才能让decide
函数返回一个类型,然后以类似于我所展示的方式使用它呢?