与えられた:
def save(f: => Any)(run:Boolean) { if (run) { println("running f"); f } else println("not running f") }
私はそれを呼び出すことができます:
save("test")(true) -> running f
save("test")(false) -> not running f
save(throw new RuntimeException("boom!"))(false) -> not running f
save(throw new RuntimeException("boom!"))(true) -> running f and then exception thrown
部分適用による興味深い動作は次のとおりです。
save(throw new RuntimeException("boom!"))(_) -> (Boolean) => Unit = <function1> //as expected
save(throw new RuntimeException("boom!")) _ -> exception thrown
コードブロックは、関数として渡されることなく、すぐに評価されます。上記の2つのステートメントの違いは何ですか?