3장 : 함수 정의와 호출
2023. 4. 10. 14:42ㆍkotlin
728x90
- const 추가 시 public static final 필드로 컴파일 됨
# 확장함수
- 어떤 클래스의 맴버 메서드인 것 처럼 호출할 수 있지만 그 클래스 밖에 선언된 함수
package strings
fun String.lastChar() : Char = this.get(this.length - 1)
- 클래스 이름(String) -- 수신 객체 타입
- 확장 함수가 호출되는 대상이 되는 값(객체, this) -- 수신 객체
- 위 코드에서 this 생략 가능
- 확장함수 안에서는 클래스 내부에서만 사용할 수 있는 private, protected 맴버를 사용할 수 없다.
- 확장함수는 오버라이드 할 수 없음
- 확장한 함수와 그 클래스 맴버 함수의 이름이 같으면 확장 함수가 아니라 맴버 함수가 호출
- as 키워드를 통해 import한 클래스나 함수를 다른 이름으로 부를 수 있음
import strings.lastChar as last
val c = "Kotlin".last()
# 확장 프로퍼티 예시
val String.lastChar : Char
get() = get(length - 1)
- 뒷받침하는 필드가 없어서 기본 게터 구현을 제공할 수 없으므로 최소한 게터는 꼭 정의를 해야
# 가변 인자 함수 : 인자의 개수가 달라질 수 있는 함수 정의
fun listOf<T> (vararg values : T) : List<T>
val list = listOf(2,3,4)
var args : Array<String>
val list = listOf("aaa", *args)
# 중위 호출과 구조 분해 선언
- 중위 호출 시에는 수신 객체와 유일한 메서드 인자 사이에 메서드 이름을 넣음
1.to("one")
1 to "one"
- 인자가 하나뿐인 일반 메서드나 확장함수에 중위 호출 사용 가능
- 함수를 중위 호출에 사용하게 허용하고 싶으면 infix 변경자를 함수 선언 앞에 추가
infix fun Any.to(other: Any) =Pair<this, other>
728x90
'kotlin' 카테고리의 다른 글
2장 : 코틀린 기초 (0) | 2023.04.10 |
---|---|
1장 : 코틀린이란 무엇이며 왜 필요한가 (0) | 2023.04.09 |