警告:类型模式中的非变量类型参数未被选中,因为它是通过擦除消除的

时间:2017-06-13 12:16:24

标签: scala

由于公司限制,我使用的是Scala 2.10.6。我怎样才能摆脱警告:

warning: non-variable type argument Market in type pattern () => Market is unchecked 
         since it is eliminated by erasure 

在以下定义中:

case (payoff: Payoff, mktFun: (() => Market)) => {
    val mkt = mktFun()
    // ...
}

2 个答案:

答案 0 :(得分:2)

例如,您可以创建一个专用数据类型case class Foo(p: PayOff, f: () => Market),您可以将其用作模式,而不是通用元组。

case Foo(payoff, mktFun) => {
    val mkt = mktFun()
    // ...
}

答案 1 :(得分:0)

一个非常简单的解决方案是定义自定义函数类型:

type MktFun = () => Market

然后:

case (payoff: Payoff, mktFun: MktFun) => {
    val mkt = mktFun()
    // ...
}

我再也没有收到警告了。