룬아님의 취중코딩

Kotlin Bootcamp for Programmers 7. default values and compact functions 본문

개발/Kotlin

Kotlin Bootcamp for Programmers 7. default values and compact functions

룬아님 2019. 10. 4. 15:20

이 태스크에서는 함수 및 메소드의 기본값에 대해 학습합니다. 또한 간결하고 읽기 쉬운 코드를 만들고 테스트를위한 코드 경로 수를 줄일 수있는 Compact function에 대해 배웁니다. Compact functions는 single-expression functions(단일 표현 함수)라고도합니다.

 

Step 1: Create a default value for a parameter

Kotlin에서는 매개 변수 이름으로 인수를 전달할 수 있습니다. 매개 변수의 기본값을 지정할 수도 있습니다. 호출자가 인수를 제공하지 않으면 기본값이 사용됩니다. 나중에 메소드 (멤버 함수)를 작성할 때 동일한 메소드의 overload 버전을 많이 작성하지 않아도됩니다.

 

1. 속도 매개 변수의 기본값은 "fast"인 함수를 작성합니다.

fun swim(speed: String = "fast") {
   println("swimming $speed")
}

 

2. main () 함수에서 swim () 함수를 세 가지 방법으로 호출하십시오. 먼저 기본값을 사용하여 함수를 호출하십시오. 그런 다음 함수를 호출하고 이름없이 속도 매개 변수를 전달한 다음 속도 매개 변수의 이름을 지정하여 함수를 호출하십시오.

swim()   // uses default speed
swim("slow")   // positional argument
swim(speed="turtle-like")   // named parameter
⇒
swimming fast
swimming slow
swimming turtle-like

 

참고 : 인수는 매개 변수 이름을 사용할 필요가 없습니다.
정의 된 순서대로 인수를 전달할 수 있습니다.
그러나 기본값을 사용하면 약간 혼동 될 수 있으므로 기본값이없는 매개 변수를 먼저 설정하고
그 뒤에 기본값이있는 매개 변수를 배치하는 것이 가장 좋습니다.

 

 

Step 2: Add required parameters

매개 변수에 기본값을 지정하지 않으면 해당 인수를 항상 전달해야합니다.

 

1. Hello.kt에서 일, 온도 및 더티 레벨의 세 가지 매개 변수를 취하는 shouldChangeWater () 함수를 작성하십시오. 이 함수는 물을 교체해야하는 경우, 일요일이거나 온도가 너무 높거나 물이 너무 더러운 경우 true를 반환합니다. 요일이 필요하지만 기본 온도는 22이고 기본 더티 레벨은 20입니다.

fun shouldChangeWater (day: String, temperature: Int = 22, dirty: Int = 20): Boolean {
    return when {
        temperature > 30 -> true
        dirty > 30 -> true
        day == "Sunday" ->  true
        else -> false
    }
}

 

2. feedTheFish ()에서 shouldChangeWater ()를 호출하고 요일을 제공하십시오. day 매개 변수에는 기본값이 없으므로 인수를 지정해야합니다. shouldChangeWater ()의 다른 두 매개 변수에는 기본값이 있으므로 인수를 전달할 필요가 없습니다.

fun feedTheFish() {
    val day = randomDay()
    val food = fishFood(day)
    println ("Today is $day and the fish eat $food")
    println("Change water: ${shouldChangeWater(day)}")
}
=> Today is Thursday and the fish eat granules
Change water: false

 

 

Step 3: Make compact functions

이전 단계에서 작성한 when 식은 많은 논리를 적은 양의 코드로 압축합니다. 포장을 약간 풀고 싶거나 점검 할 조건이 더 복잡한 경우, 이름이 지정된 지역 변수를 사용할 수 있습니다. 그러나 Kotlin은 컴팩트 한 기능을 사용합니다. 컴팩트 함수 또는 단일 표현 함수는 Kotlin에서 일반적인 패턴입니다. 함수가 단일 표현식의 결과를 리턴하면 = 기호 뒤에 함수 본문을 지정하고 중괄호 {}를 생략하고 리턴을 생략 할 수 있습니다.

 

1. Hello.kt에서 컴팩트 함수를 추가하여 조건을 테스트하십시오.

fun isTooHot(temperature: Int) = temperature > 30

fun isDirty(dirty: Int) = dirty > 30

fun isSunday(day: String) = day == "Sunday"

 

2. 새 함수를 호출하도록 shouldChangeWater ()를 변경하십시오.

fun shouldChangeWater (day: String, temperature: Int = 22, dirty: Int = 20): Boolean {
    return when {
        isTooHot(temperature) -> true
        isDirty(dirty) -> true
        isSunday(day) -> true
        else  -> false
    }
}

 

 

Default values

매개 변수의 기본값은 값일 필요는 없습니다. 다음 부분 샘플에 표시된 것처럼 다른 기능 일 수 있습니다.

fun shouldChangeWater (day: String, temperature: Int = 22, dirty: Int = getDirtySensorReading()): Boolean {
    ...

 

참고 : 기본값으로 사용되는 함수는 런타임에 계산되므로
파일 읽기 또는 대용량 메모리 할당과 같은 비싼 작업을 함수에 넣지 마십시오.
함수가 호출 될 때마다 작업이 실행되어 프로그램 속도가 느려질 수 있습니다.
반응형
Comments