【发布时间】:2015-07-03 19:51:17
【问题描述】:
我正在编写一个 DSL,我有一种情况,我希望将一个值隐式转换为任何类型。我创建了一个包装类,其中包含一个值和一个最有效的隐式方法:
case class ObjectOperationResult( val value: AnyRef )
object ObjectOperationResult {
implicit def result2T[ T ]( result: ObjectOperationResult ): T = {
result.value.asInstanceOf[ T ]
}
}
如果 result.value 不是有效类型,代码将抛出异常;由用户来确保他们在做正确的事情。但是,我想通过根据目标类型执行不同的逻辑来使其更智能。例如,如果目标类型是 String 调用 toString 而不是 asInstanceOf[];像这样:
case class ObjectOperationResult( val value: AnyRef )
object ObjectOperationResult {
implicit def result2T[ T ]( result: ObjectOperationResult ): T = {
match T {
case String s: result.value.toString
case _ : result.value.asInstanceOf[ T ]
}
}
}
这不能编译;有什么方法可以确定 T 的类型,以便我采取相应的行动?
【问题讨论】:
标签: scala methods implicit typed