Kotlin
코틀린 (3) Functions
tjddneva
2022. 4. 3. 01:02
코틀린에는 거의 모든 게 value 가 있더라.
val isUnit = println("This is an expression")
println(isUnit)
This is an expression
kotlin.Unit
심지어 println 도 값이 있다. 기본 값이 kotlin.Unit 이다.
if else 문도 expression 이라 할 수 있고 return 값이 있어서 아래와 같이 쓸 수 있다!!
val temperature = 10
val isHot = if (temperature > 50) true else false
println(isHot)
false
string 안에서도 쓸 수 있다!
val temperature = 10
val message = "The water temperature is ${ if (temperature > 50) "too warm" else "OK" }."
println(message)
The water temperature is OK.
이제 함수를 보자..
fun swim(speed: String = "fast") {
println("swimming $speed")
}
함수 파라미터를 이렇게 하고 default 값으로 "fast" 를 넣었다.
fun shouldChangeWater (day: String, temperature: Int = 22, dirty: Int = 20): Boolean {
return when {
temperature > 30 -> true
dirty > 30 -> true
day == "Sunday" -> true
else -> false
}
}
when 사용하는 꼬라지와 함수의 return type 이 Boolean 이면 어떻게 쓰는지 체크 하면 되겠다. 만약 함수에서 return 타입을 명시하지 않으면 기본으로 Unit 을 return 하게 된다.
함수들이 만약 single-expression 만 return 하면 다음과 같이 compact 하게 쓸 수 있다.
fun isTooHot(temperature: Int) = temperature > 30
fun isDirty(dirty: Int) = dirty > 30
fun isSunday(day: String) = day == "Sunday"
이렇게 표현하고 나서 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 value 에 숫자를 넣어줬는데 반드시 숫자가 올 필요가 없다. 예를 들어서
dirty: Int = getdirty() 이래도 된다는 것이다.