반응형
코틀린 함수 정의와 호출
코틀린이 자체 컬렉션을 제공하지 않는 이유?
- 자바 코드와 상호작용하기가 훨씬 더 쉽다.
# 이름 붙인 인자
- 함수 호출 부분의 가독성
- 함수에 전달하는 인자 중 일부(또는 전부)의 이름을 명시할 수 있다.
- 하나라도 이름을 명시하면 뒤에 오는 모든 인자는 이름을 명시 해야 한다.
# 디폴트 파라미터 값
함수 선언에서 파라미터의 디폴트 값을 지정할 수 있으므로 이런 오버로드 중 상당수를 피할 수 있다.
# 최상위 프로퍼티
함수와 마찬가지로 프로퍼티도 파일의 최상위 수준에 놓을 수 있다.
이런 프로퍼티의 값은 정적 필드에 저장 된다.
더 자연스럽게 사용하려면 이 상수를 public static final 필드로 컴파일해야 한다.
const변경자를 추가하면 된다.
# 확장 함수와 확장 프로퍼티
확장함수(extension function) : 어떤 클래스의 멤버 메서드인 것처럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수
추가하려면 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧 붙이기만 하면 된다.
fun String.lastChar(): Char = this.get(this.length -1)
String : 수신객체 타입(receiver type)
this : 수신 객체(receiver object)
확장함수가 캡슐화를 깨지는 않는다.
확장함수안에서는 클래스 내부에서만 사용할 수 있는 private나 protected멤버를 사용할 수 없다.
# 임포트와 확장 함수
확장함수를 사용하기 위해서는 임포트를 해야한다.
as 키워드를 사용하면 임포트한 클래스나 함수를 다른 이름으로 부를 수 있다
import strings.lastChar as last
val c = "Kotlin".last()
이름이 같은 함수를 가져와 사용해야 하는 경우 충돌을 막을 수 있다.
확장 함수는 단지 정적 메서드 호출에 대한 문법적인 편의일 뿐이다.
확장 함수가 정적 메서드와 같은 특징을 가지므로, 확장 함수를 하위 클래스에서 오버라이드 할 수는 없다.
반응형
'코틀린 & Java > 코틀린인액션' 카테고리의 다른 글
[Kotlin] 기본 요소 함수와 변수에 대해 알아보자 (1) (0) | 2024.03.19 |
---|---|
[Kotlin] 기본 요소 함수와 변수에 대해 알아보자 (2) (0) | 2024.03.19 |
[Kotlin] 클래스, 객체, 인터페이스에 대해 알아보자(1) (0) | 2024.03.18 |
[Kotlin] 클래스, 객체, 인터페이스에 대해 알아보자 (2) (0) | 2024.03.18 |
인라인 함수: 람다의 부가 비용 없애기 (0) | 2023.05.23 |