함수

fun generateAnswerString(countThreshold: Int): String {
  val answerString = when {
		count > countThreshold -> "I have the answer."
		else -> "The answer eludes me"
	}
	return answerString
}

// 단순화 가능
fun generateAnswerString(countThreshold: Int): String {
  return when {
		count > countThreshold -> "I have the answer."
		else -> "The answer eludes me"
	}
}

// 더 단순화 가능
fun generateAnswerString(countThreshold: Int): String = when {
		count > countThreshold -> "I have the answer."
		else -> "The answer eludes me"
}

익명 함수(람다 함수)

람다의 기본 정의

val lambdaName : Type = { argumentList -> codeBody }

val lambdaName = { argumentName : Type -> codeBody }

예시 코드

val stringLengthFunc: (String) -> Int = { input ->
    input.length
}

val stringLength: Int = stringLengthFunc("Android")

고차 함수

예시 코드

fun stringMapper(str: String, mapper: (String) -> Int): Int {
    // Invoke function
    return mapper(str)
}

stringMapper("Android", { input ->
    input.length
})

// 람다 함수가 함수에 정의된 마지막 매개변수인 경우
// 함수를 호출할 때 괄호 밖에서 함수 전달 가능
stringMapper("Android") { input ->
    input.length
}