【发布时间】:2013-08-26 15:24:44
【问题描述】:
我一直在学习 Scala,到目前为止它一直很好,遗憾的是我发现了一些我不完全理解的行为。希望大家给点线索,我写这个类的时候就出现了问题:
class Point(iDim:Int,data:Array[Double],f: Array[Double] => Double) {
...
def this(idim: Int, obj :ObjectThatGenerate_ArrayofDouble, f: Array[Double] => Double){
this(idim,obj.generateArray(idim),f)
}
}
所以当我在主代码中使用这些构造函数时,我需要这样做
var p:Point = new Point (idim,obj,f _)
或
var p:Point = new Point (idim,dataArray,f _)
但如果我删除辅助构造函数,我只需要像这样构建对象:
var p:Point = new Point (idim, dataArray, f)
为什么在scala中当我有一个辅助构造函数时我需要传递一个部分实现的函数“f _”,而当我没有一个辅助构造函数时我可以直接传递函数“f”?或字符“_ " 在这种情况下还有其他含义吗?
【问题讨论】:
-
这看起来像是类型推断的一些不幸限制,在处理重载的构造函数时遇到了一些麻烦。
标签: scala multiple-constructors