我定义了一个Scalatest助手来比较两个鞍座框架,如下所示:
def compareFrames[RX, CX](result: Frame[RX, CX, Double], expected: Frame[_, _, Double], tol: Double = 1e-10): Unit = {
// TODO: implement
???
}但是现在我想添加一组列索引元素,我想跳过这些元素进行测试,例如Matlab显然有一个计算偏度的公式。注意,Set元素类型必须与框架列索引类型相同:
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)发布于 2017-03-07 09:34:22
默认参数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
???
}https://stackoverflow.com/questions/42643744
复制相似问题