앱개발/코틀린

코틀린 (함수:Unit 함수,익명함수)

watervin 2022. 3. 28. 14:27

함수

 

리턴타입도 추론타입으로 설정가능

 

 

fun main(args: Array<String>) {
val name = "마드리길"
var healthPoints = 89
val isBlessed = true
val isImmortal = false
val auraColor = auraColor(isBlessed, healthPoints, isImmortal)
val healthStatus = fromHelathStatus(healthPoints, isBlessed)
printPlayerStatus(auraColor, isBlessed, name, healthStatus)
}

 

private fun castFireball(numFireballs: Int) {
println("한 덩어리의 파이어블이 나타난다. (x$numFireballs)")
}
fun main(args: Array<String>) {
:
castFireball(5)
}

람다처럼 한줄로 표현 가능

 

private fun fromHelathStatus(healthPoints: Int, isBlessed: Boolean) = 
when (healthPoints) {
100 -> "최상의 상태임!"
in 90..99 -> "약간의 찰과상만 있음."
in 75..89 -> if (isBlessed) "경미한 상처가 있지만 빨리 치유됨!"
else "경미한 상처만 있음."
in 15..74 -> "많이 다친 것 같음"
else -> "최악의 상태임!"
}
private fun castFireball(numFireballs: Int=2) = 
println("한 덩어리의 파이어블이 나타난다. (x$numFireballs)"

Unit 함수

 

반환값이 없는 함수

반환 타입: Unit ▪ 함수의 디폴트 반환 타입

 

익명함수

 

이름이 없는 함수

변수에 대입하여 쓰고 변수를 함수로 사용한다.

람다형태

매개변수/ 반환값으로 바로 사용

 

{매개변수->

함수본체

}

 

fun main(args: Array<String>) {
    val numLetters = "Mississippi".count({letter->
        println("check:$letter")
        letter=='s'

    })
    println(numLetters)


}

 

람다함수의 마지막 문장은 표현식이다

 

fun main(args: Array<String>) {
    println({
        val currentYear = 2021
        "SimVillage(copyright $currentYear)"

    }())
}

 

매개변수도 넣기

 

fun main(args: Array<String>) {
    val greetingFunction: (String)->String = { playName->
        val currentYear = 2021
        "$playName, welcome to SimpleVillage (copyright $currentYear)"



    }
    println(greetingFunction("KIM"))
}
fun main(args: Array<String>) {
    
    val greetingFunction = { playerName: String, numBuildings: Int ->
        val currentYear = 2021
        println("$numBuildings are add")
        "$playerName, welcome to SimpleVillage (copyright $currentYear)"
    }
    runSimulation("KIM", greetingFunction)

}

fun runSimulation(playerName: String,
                    greetingFunction: (String,Int)->String){
    val numBuildings = (1..3).shuffled().last()
    println(greetingFunction(playerName,numBuildings))

}

null 

 

변수가 null을 허용하는지(null 가능),  허용하지 않는지(null 불가능) 지정

fun main(args: Array<String>) {
    var drink = "맥주"
    drink = null
}

//안됨
fun main(args: Array<String>) {
    var drink : String? = "맥주"
    drink = null
}

//됨
const val NAME = "Taernly's Folly"
fun main(args: Array<String>) {
    placeOrder()

}

private fun placeOrder(){
    val indexofApostrophe = NAME.indexOf('\'')
    val tarvernMaster = NAME.substring(0 until indexofApostrophe)
    println("마드리같은 $tarvernMaster 에게 주문한다")
}