当我尝试通过隐式类为该类创建扩展并重载现有的通用方法时,它会因编译错误而失败:
error: overloaded method value getAs with alternatives:
(fieldName: String)String <and>
(i: Int)String
cannot be applied to (FooField.type)
r.getAs[String](FooField)
Run Code Online (Sandbox Code Playgroud)
通过隐式重载正常(非泛型)方法时,效果很好。在Scala 2.12.10上试用。链接到scastie。我想念什么?代码:
trait Row {
// Two overloads for `getAs[T]`
def getAs[T](i: Int): T
def getAs[T](fieldName: String): T
// Two overloads for `get`
def get(i: Int): String
def get(fieldName: String): String
}
trait Field {
def columnName: String
def columnDescription: String
}
case object FooField extends Field {
def columnName: String = "Foo"
def columnDescription: String = "Foo desc" …Run Code Online (Sandbox Code Playgroud)