13_Kotlin_고차함수&람다

박성현·2023년 5월 14일
0

고차함수 (High-order function)

  • 함수를 인자(파라미터)로 받고 결과 값으로 내보낼수 있다

  • 함수 타입 표시하는 방법

    • (파라미터의 자료형1, 파리미터의 자료형2) -> 결과의 자료형
      fun function2 (function : (Int, Int) -> Int) {
          함수내용
      }
  • 고차함수를 호출하는 방법

    • function1(100, 100) -> 일반적인 함수 호출 방법
    • function2(::function1) // ::함수이름 으로 함수를 파라미터로 받을수 있다
    fun addTwoNumbers(number1 : Int, number2 : Int) : Int {
    return number1 + number2
	}

	fun addTenNine(function : (Int, Int) -> Int) {
    val result : Int = function(10, 9)
    println("결과는 ${result} 입니다")
	}
	addTenNine(::addTwoNumbers)

람다(Lamda)

  • 람다함수는 그 자체로 고차함수 이기 때문에 별도의 연산자 없이 변수에 담을수 있다
  • 람다함수에서는 return을 사용할수 없고 마지막라인이 리턴된다

  1. 풀 버젼
  • val function3 : (String) -> Unit = { str : String -> 함수내용 } // String변수를 파라미터로 받아와 Unit형태로 반환하는 함수를 타입으로 가져옴
val addTenNine2 : (Int, Int) -> Int = { number1 : Int, number2 : Int ->
    // return number1 + number2 // 람다 안에서는 return을 실행할수 없다
    number1 + number2
}
addTenNine(addTenNine2) // 람다함수를 인자로 사용하는 경우에는 ::을 사용할 필요가 없다
  1. 축약(생략) 버젼
// 생략버젼 1
val addTenNine3 : (Int, Int) -> Int = { number1, number2 ->
    number1 + number2
}
addTenNine(addTenNine3)

// 생략버젼 2
val addTenNine4 = { number1 : Int, number2 : Int ->
    number1 + number2
}
addTenNine(addTenNine4)

// 너무 간단한 경우
addTenNine {number1, number2 -> number1 + number2} // Int형인걸 addTenNine 함수가 이미 알고있어서 생략가능
  1. 파라미터가 없는 람다
// 파라미터가 없는 람다 함수
val addTenNine5 : () -> Int = {
    10 + 9
}
  1. 파리미터가 한개인 경우라면 it을 사용한다
val function6 : (String) -> Unit = { println(it) }
profile
성장하고 싶은 안드로이드 개발자입니다.

0개의 댓글

관련 채용 정보