Notice
Recent Posts
Recent Comments
Link
반응형
변명은 만개 결과는 한개
[Kotlin] Function 본문
728x90
반응형
Function
Defining functions
- 리턴값이 없는 경우
fun 함수명(변수): Unit { // Unit 생략 가능
값 처리
}
- 리턴값이 있는 경우
fun 함수명(변수): 리턴타입 {
return 값
}
아래와 같이 한줄로 되어있는 단순한 함수라면 return 의 생략이 가능하며, 유추하기를 통해 리턴타입 또한 생략 할 수 있음
fun getSum(a: Int, b: Int): Int {
return a + b
}
// return 생략
fun getSum(a: Int, b: Int): Int = a + b
// 유추하기를 통한 생략
fun getSum(a: Int, b: Int) = a + b
Extension Functions
함수를 확장하여 기존에 있던 것처럼 사용할 수 있음.
단, Extension 보다 Class 내에 있던 원래 함수가 우선순위가 높음
fun 타입.함수명(변수): 리턴 타입 {
return 값
}
위와 같은 형태로 만들 수 있으며, 기존 타입
에 정의되어있는 함수처럼 타입
을 통해 접근하는 함수만 노출됨
fun Int.max(x: Int): Int = if (this > x) this else x
// 사용 시
숫자.max(숫자)
// 예시
print(1.max(15)) // output:15
print(5.max(2)) // output:2
infix notation
Extension Function 에서 변수가 1개만 있을 경우 아래와 같이 함수 앞에 infix
키워드를 추가하여 더욱 축약 가능
infix fun Int.max(x: Int): Int = if (this > x) this else x
fun test() {
1.max(15)
1 max 15
}
Extension Properties
Function Extension
으로도 구현이 가능하나 Property 자체 또한 간단히 확장해줄 수 있음
val <T> List<T>.lastIndex: Int
get() = size - 1
Named Arguments
fun setParams(age: Int, name: String = "Default") {
// ...
}
// 사용
setParams(email = "email@email.com", age = 10)
key - value 로 전달됨
728x90
반응형
'공부 > Kotlin' 카테고리의 다른 글
[Kotlin] Lambdas (0) | 2020.11.14 |
---|---|
[Kotlin] Control Flow (0) | 2020.11.13 |
[Kotlin] class (0) | 2020.11.10 |
[Kotlin] Types, Properties, Fields (0) | 2020.11.07 |
[Kotlin] findViewById 하는 세가지 방법 (0) | 2020.11.07 |