hyeals study
[코틀린] 연산자 오버로딩 & 관례 - (1) 산술연산자 오버로딩 본문
* 관례(convention): 어떤 언어 기능과 미리 정해진 이름의 함수를 연결해주는 기법.
☞ ex) 어떤 클래스 안에 plus라는 특별한 메소드를 전의하면 그 클래스의 인스턴스에 대해 + 연산자를 사용할 수 있음
* 코틀린에서 관례를 사용하는 가장 단순한 예시가 산술연산자임.
[이항 산술 연산 오버로딩]
- 이 포스팅에서 사용하는 Point 클래스는 화명 상의 점을 표현하는 클래스임
- plus 연산자 함수: 두 점의 x 좌표와 y 좌표를 각각 더하는 함수. (멤버 함수)
- operator 키워드: 연산자를 오버로딩하는 함수 앞에는 반드시 operator 키워드를 붙여야 함. (operator 키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 할 수 있음)
☞ 이처럼 operator 변경자를 추가해서 plus 함수를 선언하고 나면 + 기호로 두 Point 객체를 더할 수 있음.
※ 오버로딩이 가능한 이항 산술 연산자 종류
식 | 함수 이름 |
a * b | times |
a / b | div |
a % b | mod |
a + b | plus |
a - b | minus |
[복합 대입 연산자 오버로딩]
* 복합 대입 연산자(compound assignment): +=, -= 등의 연산자
식 | 함수 이름 |
a += b | plusAssign |
a -= b | minusAssign |
a *= b | timesAssign |
- "a += b" 는 "a = a.plus(b)"와 "a.plusAssign(b)"로 번역할 수 있음
[단항 연산자 오버로딩]
* 단항 연산자도 이항 연산자와 마찬가지로 정해진 이름의 함수를 선언하면서 operator로 표시하면 됨.
- 위 코드에서 단항 minus 함수는 파라미터가 없음을 알 수 있음
- 위 코드에서 단항 연산자를 멤버 함수로 만드는 대신 확장함수로 정의했음.
※ 오버로딩할 수 있는 단항 산술 연산자 종류
식 | 함수 이름 |
+a | unaryPlus |
-a | unaryMinus |
!a | not |
++a, a++ | inc |
--a, a-- | dec |
본 게시물은 "Kotlin IN ACTION"을 참고함.
'코틀린' 카테고리의 다른 글
[코틀린] 고차 함수 (0) | 2020.02.27 |
---|---|
[코틀린] 연산자 오버로딩 & 관례 - (2) 비교연산자 오버로딩 (0) | 2020.02.25 |
[코틀린] 타입 시스템 (2) - 원시 타입 (0) | 2020.02.25 |
[코틀린] 타입 시스템 (1) - 널 가능성 (0) | 2020.02.23 |
[코틀린] 수신 객체 지정 람다 (0) | 2020.02.22 |
Comments