5

当我得到error: unbound wildcard type. 我试图声明这个(无用的)函数:

def ignoreParam(n: _) = println("Ignored")

为什么我会收到此错误?

是否可以在不引入命名类型变量的情况下声明此函数?如果是这样,怎么做?

4

1 回答 1

13

Scala 不会在参数中推断类型,类型从声明流向使用站点,所以不,你不能这样写。你可以把它写成def ignoreParam(n: Any) = println("Ignored") or def ignoreParam() = println("Ignored")

就目前而言,您的类型签名并没有真正意义。您可能期望 Scala 推断出这一点,n: Any但由于 Scala 不推断参数类型,因此没有赢家。在 Haskell 中,您可以合法地编写代码ignoreParam a = "Ignored",因为它具有更强大的类型推理引擎。

为了得到你想要的最接近的近似值,你会像def ignoreParams[B](x: B) = println("Ignored")我想的那样写它。

于 2015-07-17T08:45:07.717 回答