【发布时间】:2018-02-01 04:35:50
【问题描述】:
假设我有以下代码sn-p:
import scala.language.implicitConversions
sealed trait Command {
val typeName: String
}
object Command {
implicit def command2String(implicit c: Command): String =
c.typeName
}
case object SendMessageCommand extends Command {
override val typeName: String = "send_message"
}
我想比较 String 与 Command 后代没有显式转换。例如:
"sendMessage" == SendMessageCommand
Q1:在 Scala 中是否可行?
Q2:我能否定义通用隐式转换,将已知类型(如 String)转换为超类类型(如 Command 在我的例子中)?
例如:
implicit def string2Command(implicit s: String): Command = {
case "send_message" => SendMessageCommand
case _ => // some error thrown
}
附:我知道它不是惯用的 Scala,但找到正确的方法会很棒。
【问题讨论】:
标签: scala implicit-conversion scala-implicits