【发布时间】:2014-04-19 10:12:12
【问题描述】:
我有以下几点:
def calc(dir: File): Option[Group] = {
calcModel(dir) match {
case Some(model: Model) => calcUI(model, centerpane.getWidth, centerpane.getHeight, 5, MAX_LEVEL)
case None => None
}
}
def calcUI(model: Model, availableWidth: Double, availableHeight: Double, maxLevel: Int): Option[Group] = {
}
def calcUI(model: Model, posX: Double, posY: Double, availableWidth: Double, availableHeight: Double, horizontally: Boolean, startLevel: Int, maxLevel: Int): Option[Group] = {
}
protected def calcUI(node: Node, posX: Double, posY: Double, availableWidth: Double, availableHeight: Double, horizontally: Boolean, level: Int, maxLevel: Int): Group = {
}
def calcModel(dir: File): Option[Model] = {
}
(备注:模型不是从Node派生的)
并得到以下编译器错误消息:
Error:(88, 27) overloaded method value calcUI with alternatives:
(node: org.rob.spaceview.modell.Node,posX: Double,posY: Double,availableWidth: Double,availableHeight: Double,horizontally: Boolean,level: Int,maxLevel: Int)javafx.scene.Group <and>
(model: org.rob.spaceview.modell.Model,posX: Double,posY: Double,availableWidth: Double,availableHeight: Double,horizontally: Boolean,startLevel: Int,maxLevel: Int)Option[javafx.scene.Group] <and>
(model: org.rob.spaceview.modell.Model,availableWidth: Double,availableHeight: Double,maxLevel: Int)Option[javafx.scene.Group]
cannot be applied to (org.rob.spaceview.modell.Model, Double, Double, Int, Int)
case Some(model) => calcUI(model, centerpane.getWidth, centerpane.getHeight, 5, MAX_LEVEL)
^
我不明白。所有 calcUI 函数的参数不同。
我知道这个错误,而且大部分时间我都会得到它并修复它。但是在这里,没有任何线索。
希望有人启发我。谢谢。
【问题讨论】:
-
我也不明白。您希望选择哪种方法?您使用五个参数。你知道重载是邪恶的,对吧?至少,除非你知道自己在做什么?
-
重载是邪恶的?我想说重载是 Java/Scala 的一个非常有用和重要的方面。
-
查看下面的答案和我的评论。真丢人。
-
@Keppil 例如stackoverflow.com/q/2510108/1296806 或谷歌。另外,如果您不使用@,我无法回复。即使它是必要的邪恶(有争议),仍然是邪恶的。
-
@som:有趣的链接,谢谢。
标签: scala overloading