-1
ここに私のコードです。エラーがあります理由ですなぜスカラーではアンダースコアが拡大しないのですか?
val b = a map { f(x => x.length) } // absolutely wrong
:コンパイラは、次のようにコードを展開するように計算bが、それはそうするとき
def f(x: Int) = x
val a = List(List(1), List(2, 2))
val b = a map { f(_.length) } // error
val c = a map { item => f(item.length) } // no error
エラーが発生します。正しい展開は、cを計算するときと同じようなものです。しかし、どのように機能F機能を期待していないとき?Fのための機能を拡張することができますコンパイラ
は私にとって、このexpandationはどんな意味がありません。誰もこの行動を説明できますか?ありがとう!
期待どおりに展開されます。あなたの期待は正しいとは言えません。あなたがパターンマッチングに全部を比較すると考えるなら、あなたは何がうまくいかなかったかを知ることができます。これは正確ではありません...理解のために、これと似た '.map(_。length)'と考えると、この 'map(x => x match {case _ => x .length}) '。今あなたが書いたのは 'a.map(f(x => x x match {case _ => x.length}))' –
です@Micho私はそれがその質問と重複しているとは認めません。その答えはプレースホルダーの構文が拡張されているとしか言いませんが、質問の著者は既にそれを知っています。 –
@SarveshKumarSingh Thx!あなたの例は本当に私を助けます:) –