5

を取得したとき、私は Scala REPL で遊んでいましたerror: unbound wildcard type。私はこの(役に立たない)関数を宣言しようとしました:

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

このエラーが発生するのはなぜですか?

名前付き型変数を導入せずにこの関数を宣言することは可能ですか? もしそうなら、どのように?

4

1 に答える 1

13

Scala は引数の型を推論しません。型は宣言からユース サイトに流れます。def ignoreParam(n: Any) = println("Ignored") またはのように記述できますdef ignoreParam() = println("Ignored")

現状では、型シグネチャはあまり意味がありません。Scala がそれを推論することを期待できますn: Anyが、Scala は引数の型を推論しないため、勝者はありません。ignoreParam a = "Ignored"Haskell では、型推論エンジンが強力なため、合法的に書くことができました。

あなたが望むものの最も近い近似値を得るには、私が推測するようにそれを書くでしょうdef ignoreParams[B](x: B) = println("Ignored").

于 2015-07-17T08:45:07.717 に答える