को देखते हुए के साथ प्रयोग किया है:आंशिक समारोह आवेदन समय से पहले ही codeblock चलता है जब अंडरस्कोर
save(throw new RuntimeException("boom!"))(_) -> (Boolean) => Unit = <function1> //as expected
save(throw new RuntimeException("boom!")) _ -> exception thrown
:
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
यहाँ आंशिक आवेदन के साथ उत्सुक व्यवहार है:
def save(f: => Any)(run:Boolean) { if (run) { println("running f"); f } else println("not running f") }
मैं इसके साथ कॉल कर सकते हैं फ़ंक्शन के रूप में पास किए बिना कोडब्लॉक का तत्काल मूल्यांकन किया जाता है। उपरोक्त 2 कथनों के बीच क्या अंतर है?
आप यहां कुछ स्पष्टीकरण पा सकते हैं: http://stackoverflow.com/questions/2363013/in-scala-why-cant-i-partially-apply-a-function-without-explicitly-specifying-it –
IMHO, यह एक बग है। –