카테고리 없음

kotlin_함수

zelkova 2021. 4. 23. 15:38

<목차로 돌아가기>

 

함수의 선언

함수를 선언하려면 fun 키워드 뒤에 함수 이름이 오도록 사용합니다.

fun generateAnswerString() { }

 

함수의 인수 입력

함수를 선언하려면 fun 키워드 뒤에 함수 이름이 오도록 사용합니다.

fun generateAnswerString(countThreshold: Int) { }

 

함수의 값 반환
fun generateAnswerString(): String {
    return "I have the answer."
}

 

함수의 호출
val answerString = generateAnswerString()

 

 

함수의 단순화
fun generateAnswerString(countThreshold: Int): String {
    val answerString = if (count > countThreshold) {
        "I have the answer."
    } else {
        "The answer eludes me."
    }

    return answerString
}

변수 초기화도 귀찮으면 return값에 바로 넣기..

fun generateAnswerString(countThreshold: Int): String {
    return if (count > countThreshold) {
        "I have the answer."
    } else {
        "The answer eludes me."
    }
}

 

리턴도 거슬리면 이것도 생략...

fun generateAnswerString(countThreshold: Int): String = if (count > countThreshold) {
        "I have the answer"
    } else {
        "The answer eludes me"
    }

 

if도 거슬린다... when사용..

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

 

변수 이름 짓기도 귀찮은 사람을 위해 익명함수를 사용!

val stringLengthFunc: (Int) -> String = {input -> when 
    {
        count > input -> "I have the answer."
        else -> "The answer eludes me."
    }
}

 

고차 함수

함수를 인수로 받을 수 있습니다.

함수를 정의하고 사용하는 예 입니다.

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

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

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

 

이렇게 익명의 함수가 마지막 매개변수인 경우 ')' 밖에서 호출할 수 있습니다.

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

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

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

 

 

 

반응형