mar*_*ran 4 types scala existential-type unbounded-wildcard
当我得到时,我正在玩Scala REPL error: unbound wildcard type.我试图声明这个(无用的)函数:
def ignoreParam(n: _) = println("Ignored")
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
是否可以在不引入命名类型变量的情况下声明此函数?如果是这样,怎么样?
Scala不推断参数中的类型,类型从声明流向use-site,所以不,你不能写.你可以把它写成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")我想的那样写出它.