未绑定通配符类型

Unbound Wildcard Type

当我得到 error: unbound wildcard type 时,我正在玩 Scala REPL。我试图声明这个(无用的)函数:

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

为什么会出现此错误?

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

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

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

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