4
隱類
我嘗試在重載對象的方法世界使用隱 類世界爲什麼不能重載無參數方法,爲
class World {
}
object World {
implicit class WithWorld(_world: World) {
def world(): Unit = println("world")
}
implicit class WithWorld2(_world: World) {
def world(i: List[Int]): Unit = println("list Int")
}
implicit class WithWorld3(_world: World) {
def world(i: List[String]): Unit = println("list String")
}
}
//測試
val world = new World()
//這是正確的
world.world(List(1))
world.world(List("string"))
//但是這個world.world()
,我得到一個編譯錯誤
Error:(36, 5) type mismatch;
found : world.type (with underlying type World)
required: ?{def world: ?}
Note that implicit conversions are not applicable because they are ambiguous:
both method WithWorld in object World of type (_world: World)World.WithWorld
and method WithWorld2 in object World of type (_world: World)World.WithWorld2
are possible conversion functions from world.type to ?{def world: ?}
world.world()
^
不要使用重載...通常這不是一個好主意。你想通過超載來實現什麼? –
我只想嘗試隱式類的功能 –