trait Rectangular{
def topLeft:Point
def bottomRight:Point
def left=topLeft.x
def right=bottomRight.x
def width=right-left
//andmanymoregeometricmethods...
}
class Rectangle(val topLeft:Point,val bottomRight:Point)
extends Rectangular{
//othermethods...
}
Rectangular에서는 추상 함수를 정의하고 기본 생성자에서 val을 사용하여 Rectangle 클래스에서이 함수를 구현합니다.스칼라 - 특성의 추상 함수
이것은 특성에 특별한 경우입니까? 이 예상되는 동작입니까?
이전에 그는 def의 것만이 def의 것을 대체 할 수 있다고 설명했습니다. 그러나이 경우 val은 추상적 인 함수를 구현하는데, 이것은 정말로 이상합니다.
'누구'입니까? 이 책을 발췌 한 것입니까? – paradigmatic
http://www.amazon.com/Programming-Scala-Comprehensive-Step---Step/dp/0981531644/ref=sr_1_1?ie=UTF8&qid=1347900072&sr=8-1&keywords=SCALA –
내가 너라면, 그 책에서 멀리 떨어져있어. 저자는'def'와'val'을 오버라이드 할 수 있다는 잘못에 (또는 오해의 소지가 있음에도)뿐만 아니라, 저자는 또한 메소드와 함수의 차이에 대해 분명히 혼란 스럽습니다. 위 코드 스 니펫에는 추상화 또는 다른 기능이 없으며 메소드 만 있습니다. 스칼라에서 메소드와 함수의 차이점이 * 근본적으로 * 중요하다는 것을 고려하면 큰 실수가 될 것입니다. –