我正在努力解决以下在编译时抛出错误的问题“错误:值dir不是类型参数A的成员”。但它是!
trait Logger { def dir: String }
trait LoggerFile[A <: Logger] {
def extractor: String => Option[A]
}
def getHistory[A: LoggerFile](): String = {
implicitly[LoggerFile[A]].extractor("abc") match {
case Some(a) => a.dir
case None => ""
}
}
我能够使用this answer来解决这个问题:
def getHistory[A <: Logger]()(implicit env: LoggerFile[A]): String = {
但是我希望系统在转换之前工作,即使用语法糖。 有没有办法在A?
上指定多个类型约束答案 0 :(得分:3)
将所有约束放在一起。
将类型签名更改为
def getHistory[ A <: Logger : LoggerFile ](): String
你的例子编译得很好。