devlog of ShinJe Kim

[TIL] 2019-08-26 (월)

|

Today I Learned

Kotlin in Action 3장

3.3.4 확장 함수는 오버라이드 할 수 없다

코틀린은 확장 함수를 정적으로 결정하기 떄문에 확장 함수를 오버라이드 할 수 없다. 만약 어떤 클래스의 확장 함수와, 해당 클래스의 멤버 함수의 이름이 같다면 확장 함수가 아니라 멤버 함수가 호출된다.

3.4.2 가변 인자 함수: 인자의 개수가 달라질 수 있는 함수 정의 코틀린에서는 아래와 같이 파라미터 앞에 vararg 변경자를 붙이면 가변 인자를 사용할 수 있다(자바에서는 타입 뒤에 ...를 붙였다)

fun listOf<T> (vararg values: T) List<T>{ ... }

3.4.3 값의 쌍 다루기: 중위 호출과 구조 분해 선언 코틀린에는 중위 호출(infix call)이라는 특별한 호출 방식이 있다. 중위 호출 시에는 수신 객체와 유일한 메소드 인자 사이에 메소드 이름을 넣는다(이 떄 객체, 메소드 이름, 유일한 인자 사이에는 공백이 들어가야 한다). 중위 호출은 인자가 하나인 일반 메소드나, 인자가 하나인 확장 함수에 사용할 수 있다.

1.to("one") // "to" 메소드를 일반적인 방식으로 호출함
1 to "one" // "to" 메소드를 중위 호출 방식으로 호출함

함수를 중위호출에 사용하게 허용하고 싶으면 infix 변경자를 함수 선언 앞에 추가해야 한다. 구조 분해 선언(destructuring declaration) 부분이 이해가 안됨. 다시 정리해보고 여쭤보기.

3.5 문자열과 정규식 다루기

3.5.1 문자열 나누기 코틀린에서는 아래와 같이 하나 이상의 문자를 인자로 받는 split 함수를 사용할 수 있다.

>>>println("12.345-6.A".split(".", "-"))
(12, 345, 6, A)

Comments