반응형
고차함수
- 함수의 인수로 함수를 전달하거나 함수를 반환할 수 있는 함수
//calculator: 함수를 인자로 넘겨받은 고차함수
//x, y를 인자로 넘겨받은 process함수에 넣은 뒤 그 결과값을 반환한다.
fun calculator(x: Int, y: Int, process: (Int, Int)->Int) = process(x, y)
//plus함수를 넘겨 그 결과값을 반환받는다.
val plus = {x: Int, y: Int -> x + y}
val plusResult = calculator(10, 20, plus) //30
//minus함수를 넘겨 그 결과값을 반환받는다.
val minus = {x: Int, y: Int -> x - y}
val minusResult = calculator(100, 10, minus) //90
//곱하기 함수를 바로 지정해서 넘긴후 결과값 반환받는다.
val minusResult = calculator(5, 6, {x: Int, y: Int -> x * y}) //30
let
- 지정된 값이 null이 아닌 경우에 코드를 실행해야 하는 경우에 사용
val x: Int = 10
//getPlusValue() 는 null도 리턴가능한 함수
//null이 아니면 x에 해당값을 더한다.
getPlusValue()?.let {
x = x + it
}
with
- 지정값이 null이 아니고 결과가 필요하지 않은 경우에 사용
var student: Student = getStudent()
with(student) {
println(student.age)
println(student.school)
}
apply
- 객체 초기화에 사용
val joy = Person().apply{
name = "joy"
age = 10
}
run
- 익명함수처럼 사용하여 블록의 결과를 반환(블록안의 변수는 모두 임시로 사용됨)
val sum = run {
val a = 10
val b = 20
a + b
}
println(sum) //30
- 객체를 블록의 리시버 객체로 전달하여 사용(안전한 호출, with와 유사)
var text = "hello"
text?.run {
println(toUpperCase())
}
반응형
'안드로이드(Kotlin)' 카테고리의 다른 글
Android(Kotlin) 클래스 형변환(as), 클래스 형체크(is) (0) | 2021.11.20 |
---|---|
Android(Kotlin) 람다(Lambda), SAM변환, 확장함수(기존클래스에 함수 추가) (0) | 2021.11.20 |
Android(Kotlin) Array, List, Map, Set (0) | 2021.11.20 |
Android(Kotlin) null(?), lateinit, lazy (0) | 2021.11.20 |
Android(Kotlin) 인터페이스(interface) (0) | 2021.11.20 |
최근댓글