2017-03-07 179 views
0

我定义了一个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) 

回答

1

您的默认参数为Set()toSkipSet[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 
    ??? 
}