私には理解できないこの奇妙な状況があります。「ProgramminginScala」の本、Ch。9.9。
私がカリー化された関数を持っているとしましょう:
def withThis(n:Int)(op:Int=>Unit){
println("Before")
op(n);
println("After")
}
特別なカーリー構文内で1つの引数を使用して呼び出すと、期待どおりに機能します。
withThis(5){
(x) => {println("Hello!"); println(x); }
}
// Outputs
Before
Hello!
5
After
ただし、2つのステートメントを入力すると、奇妙なことがわかります。
withThis(5){
println("Hello!")
println(_)
}
// Outputs
Hello!
Before
5
After
どうして「こんにちは!」「Before」の前に印刷され、次に「5」が内部に印刷されますか?私は夢中ですか?