def foo(num:Int, str:String):Int = 1
val bar = foo(3, _) // compiler complains "missing parameter type for expanded function ((x$1) => test(3, x$1))"
val baz = foo(3, _:String) // compiles fine
なぜコンテキストから推測できないのかを明示的に指定する必要がありますか?部分的に適用される関数定義の冗長パラメータ型情報
EDIT:David Soergelの提案に基づいて名前が衝突しないように名前が変更されました。すべての
ありがとうございます。しかし、 'def foo(num:Int)= 1; val bar = foo(_) 'がうまくコンパイルされます。だから私は相続または暗黙の変換がエラーを引き起こすとは思わない。 – xiefei
ああ、申し訳ありませんが、私の議論についてのさらなる議論は、とにかく意味がありません。コンパイラは実際にはbar引数の型をStringに推論してから、いつものようにbarを呼び出すときにimplicitsを許可することができます。 –