일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코틀린
- high order function
- 안드로이드개발레벨업교과서
- IntentTestRule
- espresso
- Fragment에서 Activity의 함수 사용하기
- viewholder
- 코딜리티
- ActivityTestRule
- binding adapter
- 안드로이드스튜디오
- adapter
- 안드로이드13
- 뷰변경 감지
- 안드로이드
- searchview
- Android
- 고차함수
- fragment
- 생명주기
- 재사용
- 구분선
- 테마 아이콘
- 스와이프
- ui test
- LayoutManger
- Error:Execution failed for task ':app:mergeDebugResources'
- recyclerview
- 리사이클러뷰
- Fragment 수동 추가
- Today
- Total
룬아님의 취중코딩
Kotlin Bootcamp for Programmers 7. default values and compact functions 본문
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 {
...
참고 : 기본값으로 사용되는 함수는 런타임에 계산되므로
파일 읽기 또는 대용량 메모리 할당과 같은 비싼 작업을 함수에 넣지 마십시오.
함수가 호출 될 때마다 작업이 실행되어 프로그램 속도가 느려질 수 있습니다.
'개발 > Kotlin' 카테고리의 다른 글
(Kotlin) 함수를 인자로 넘겨서 실행 (0) | 2019.10.16 |
---|---|
Kotlin Bootcamp for Programmers 8. 람다와 고차함수 (0) | 2019.10.15 |
Kotlin Bootcamp for Programmers 6. 함수 사용 (0) | 2019.10.04 |
Kotlin Bootcamp for Programmers 5. 왜 (거의) 모든 것들은 value를 가지고 있을까? (0) | 2019.10.04 |
Kotlin Bootcamp for Programmers 4. arrays, lists, and loops (0) | 2019.09.30 |