먼저. 다음 코드를 고려하십시오.scalac이 추가/포장 마감을 생성하는 이유
scala> val fail = (x: Any) => { throw new RuntimeException }
fail: Any => Nothing = <function1>
scala> List(1).foreach(fail)
java.lang.RuntimeException
at $anonfun$1.apply(<console>:7)
at $anonfun$1.apply(<console>:7)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
foreach와 예외 사이에는 추가 anonfun이 있습니다. 하나는 fail
자체의 값 (Function1 [])의 개체가 될 것으로 예상되지만 두 번째 값은 어디에서 오는 것입니까? 그래서
def foreach[U](f: A => U): Unit
, 두 번째의 목적은 무엇인가 :
foreach
서명은이 기능을한다? 그들이 정말 필요합니까 ... 두 개의 추가 anonfuns 있습니다
scala> def outer() {
| def innerFail(x: Any) = { throw new RuntimeException("inner fail") }
|
| Set(1) foreach innerFail
| }
outer:()Unit
scala> outer()
java.lang.RuntimeException: inner fail
at .innerFail$1(<console>:8)
at $anonfun$outer$1.apply(<console>:10)
at $anonfun$outer$1.apply(<console>:10)
at scala.collection.immutable.Set$Set1.foreach(Set.scala:86)
:
둘째, 다음 코드를 고려? : -E
스칼라 버전 2.9.2.rdev-2769-2011-12-13-g2dd83da (Java HotSpot (TM) 64 비트 서버 VM, Java 1.6.0_25). – tuxSlayer