반응형

고차함수

  • 함수의 인수로 함수를 전달하거나 함수를 반환할 수 있는 함수
//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())
}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기