-
Notifications
You must be signed in to change notification settings - Fork 0
CH07. 연산 오버로딩과 기타 관례 (이희찬)
관례
어떤 언어의 기능과 미리 정해진 이름의 함수를 연결해주는 기법을 코틀린에서는 관례(convention)라고 부릅니다.
기존 자바 클래스에 대해 확장함수를 구현하면서 관례에 따라 이름을 붙이면, 기존 자바 코드를 바꾸지 않아도 새로운 기능을 쉽게 부여할 수 있습니다.
operator
키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 할 수 있습니다.
두 좌표의 합을 위처럼 구현할 수 있지만,
이렇게도 구현할 수 있습니다. 그리고 이처럼 외부 함수의 클래스에 대한 연산자를 정의할 때는 관례를 따르는 이름의 확장 함수로 구현하는 게 일반적인 패턴입니다.
위는 오버로딩이 가능한 이항 산술 연산자입니다.
+=, -= 와 같은 것을 복합 대입 연산자라고 부릅니다.
위의 결과는 Point(x=-10, y=-20)가 됩니다.
위는 오버로딩 할 수 있는 단항 산술 연산자입니다.
코틀린은 == 연산자 호출을 equals 메소드 초출로 컴파일합니다.
직접 구현하게 된다면, 위와 같은 결과가 나오게 됩니다.
위처럼 방정식 넘겨주는 느낌으로 컴파일 된다는 것을 알 수 있습니다.
직접 구현하게 된다면, 위와 같은 결과가 나오게 됩니다.
코틀린은 위와 같은 방법으로 Get 관례를 구현할 수 있습니다.
Set 관례는 위와 같이 구현할 수 있습니다.
위는 In 관례를 구현한 것입니다.
위는 rangeTo의 관례인데, start ~ end를 뜻합니다.
구조 분해를 사용하면 복합적인 값을 분해해서 여러 다른 변수를 한꺼번에 초기화할 수 있습니다.
위와 같이 구조 분해를 사용하면, 매개 변수를 꺼낼 수 있습니다.
데이터 클래스의 경우에는 컴파일러가 자동으로 componentN 함수를 만들어 주지만, 데이터 클래스가 아닌 경우에는 아래와 같이 구현해주어야합니다.
참고로 배열이나, 컬렉션에도 componentN 함수가 있습니다.
이런식으로 맵의 원소에 대해 이터레이션할 때도 유용하게 쓸 수 있습니다.
위임 프로퍼티는 일반적으로 위와 같은 문법으로 사용됩니다.
그리고 위와 같이 사용할 수 있습니다.
간단한 예시를 통해서 위임 프로퍼티의 기능인 지연 초기화를 해보도록 하겠습니다.
위임 프로퍼티는 위와 같이 지연 초기화를 할 수 있습니다.
그리고 by lazy()를 사용하여 위와 같이 간소화할 수 있습니다.