import swing._
object PeerTest extends SimpleSwingApplication {
def top = new MainFrame {
val p = peer.getMousePosition
}
}
da¿Por qué esta referencia es ambigua?
error: ambiguous reference to overloaded definition,
both method getMousePosition in class Container of type (x$1: Boolean)java.awt.Point
and method getMousePosition in class Component of type()java.awt.Point
match expected type ?
val p = peer.getMousePosition
pero añadiendo el tipo
val p: Point = peer.getMousePosition
lo hace bien. ¿Por qué?
edición: provoca un problema:
class A {
def value() = 123
}
class B extends A {
def value(b: Boolean) = 42
}
object Main extends App {
println ((new B).value)
}
no causa problema:
class A {
def value() = 123
def value(b: Boolean) = 42
}
class B extends A {}
object Main extends App {
println ((new B).value)
}
Así que creo que la respuesta tiene que explicar por qué sólo se produce cuando los métodos son en diferentes clases .
Así podemos romper el código de las personas si decidimos agregar métodos de sobrecarga a una clase ... esto no parece muy bueno. Pensé que poner un '_' después del método era la forma de convertirlo en una función parcialmente aplicada. –
@Luigi Hay muchas maneras de descifrar el código de las personas agregando sobrecargas, esta es solo una forma más. –
http://stackoverflow.com/questions/2510108/why-avoid-method-overloading – retronym