scala 带有替代方法的重载方法值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22399593/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-22 06:06:20  来源:igfitidea点击:

Overloaded method value with alternatives

scalaoverloading

提问by Rob

I have the following:

我有以下几点:

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] = {
}

(Remark: Model does NOT derive from Node)

(备注:模型不是从节点派生的)

and get the following compiler error message:

并获得以下编译器错误消息:

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)
                      ^

I do not get it. All calcUI functions are different by parameters.

我不明白这一点。所有 calcUI 函数都因参数而异。

I know this error and most of the time I get it and fix it. But here, no clue.

我知道这个错误,而且大部分时间我都会得到它并修复它。但在这里,没有线索。

Hopefully somebody enlights me. Thanks.

希望有人启发我。谢谢。

采纳答案by Lomig Mégard

Actually, the given parameters in the call

实际上,调用中的给定参数

case Some(model) => calcUI(model, centerpane.getWidth, centerpane.getHeight, 5, MAX_LEVEL)

don't correspond to any defined calcUImethod. For example for the following definition

不对应于任何定义的calcUI方法。例如对于以下定义

def calcUI(model: Model, availableWidth: Double, availableHeight: Double, maxLevel: Int): Option[Group]

you have one more argument than needed.

你有一个比需要的更多的论据。