2
의도 한 동작입니까, 아니면 버그입니까? (이 클래스, 중요하지 않습니다 수) 다음과 같은 특성을 고려기본 유형 매개 변수 리터럴 클래스 매개 변수
scala> val p = new P[Int] {
| val inner = new Inner
| }
p: java.lang.Object with P[Int]{def inner: this.Inner} = [email protected]
scala> p.inner.f(5)
nope
그러나이 :
trait P[T] {
class Inner(val f: T => Unit = _ => println("nope"))
}
이것은 내가 기대 한 것이 무엇인가?
중첩 된 클래스, 추상 유형 및 기본 매개 변수 사이의 다소 모호한 교차로에 불구하고, 버그가 나타납니다scala> val p = new P[Int] {
| val inner = new Inner() {
| println("some primary constructor code in here")
| }
| }
<console>:6: error: type mismatch;
found : (T) => Unit
required: (Int) => Unit
val inner = new Inner() {
^
그래서 버그 였고 약 2 주 전에 수정되었습니다. –