Scala的类型不匹配
问题描述:
我定义了一个Scalatest帮手来比较两个鞍架这样的:Scala的类型不匹配
def compareFrames[RX, CX](result: Frame[RX, CX, Double], expected: Frame[_, _, Double], tol: Double = 1e-10): Unit = {
// TODO: implement
???
}
但现在我想补充一组列索引的元素,我想跳过测试例如Matlab具有明显不同的公式来计算偏度比鞍......注意,设置元素类型必须是一样的帧列索引类型:
def compareFrames[RX, CX](result: Frame[RX, CX, Double], expected: Frame[_, _, Double], toSkip: Set[CX] = Set(), tol: Double = 1e-10): Unit = {
// TODO: implement
???
}
但是这会导致以下编译器错误时,函数时没有指定默认参数调用:
Error:(53, 7) type mismatch;
found : scala.collection.immutable.Set[Nothing]
required: Set[String]
Note: Nothing <: String, but trait Set is invariant in type A.
You may wish to investigate a wildcard type such as `_ <: String`. (SLS 3.2.10)
Error occurred in an application involving default arguments.
compareFrames(result, expected)
答
您的默认参数为Set()
是toSkip
型Set[Nothing]
的,你要问Set[CX]
类型的Set[CX]()
:
def compareFrames[RX, CX](result: Frame[RX, CX, Double], expected: Frame[_, _, Double], toSkip: Set[CX] = Set[CX](), tol: Double = 1e-10): Unit = {
// TODO: implement
???
}