- 기본 함수선언
틀은 다음과 같다.
fun 함수이름(인자): 반환형 { 바디 }
- 리턴값이 없는 함수
자바에서 리턴타입이 void 이면 void를 적어주었다면 코틀린은 그냥 : 반환형을 생략하면 된다.
fun 함수이름(인자) { 바디 }
이런 함수는 kotlin.Unit 을 반환한다고 생각하면 된다. 코틀린에서 값이 없다는 뜻이다.
- main() 함수는 실행의 entry point 이다.
command line arguments 가 string 의 배열로 전달된다.
fun main(args: Array<String>) {
println("Hello World")
}
1.3 버전 이후로는 main 함수에 파라미터를 쓰지 않아도 된다.
IntelliJ 에서 커맨드라인을 주는 방법은 Run > Edit Configuration 에서 원하는 파일을 선택해서 Program arguments 에 인자를 전달하면 된다.
- parameter 에 default value 을 설정 및 parameter 이름 지정
함수를 선언할 때 parameter 에 default value 을 설정할 수 있다. 그러면 함수를 호출할 때 해당 argument 를 전달하면 전달한 값이 쓰이고 전달하지 않으면 default value 가 쓰인다.
이 기능은 overloading 을 줄여줄 수 있어서 유용한 기능이다.
default value 는 parameter 에서 뒤쪽으로 빼는 것이 좋다. parameter 이름을 지정하면 괜찮지만 그렇지 않다면 혼란스러울 수 있기 때문이다.
당연히 default value 를 사용하지 않은 parameter 는 상응하는 argument 를 전달해야만 한다.
fun swim(speed: String = "fast") {
println("swimming $speed")
}
fun main () {
swim() // uses default speed
swim("slow") // positional argument
swim(speed="turtle-like") // named parameter
}
아래와 같이 default value 에 함수로 값을 전달할 수도 있다. 그래도 런타임에 함수를 호출할 때마다 함께 default value 를 구하게 되니 너무 많은 연산을 요구하는 동작은 하지 않게 주의한다.
fun shouldChangeWater (day: String, temperature: Int = 22, dirty: Int = getDirtySensorReading()): Boolean {
- compact functions or single-expression functions
하나의 결과를 반환하는 expression 을 가진 함수라면 {} 과 return 을 없애고 = 으로 반환해줄 수 있다.
fun isTooHot(temperature: Int) = temperature > 30
fun isDirty(dirty: Int) = dirty > 30
fun isSunday(day: String) = day == "Sunday"
'Kotlin' 카테고리의 다른 글
[Kotlin] Class (constructor, getter/setter, companion object) 기초 (0) | 2021.08.04 |
---|---|
[Kotlin] lambda 와 higher-order function (0) | 2021.08.03 |
[Kotlin] 리스트, 배열, 반복문에서 흥미로웠던 부분 (0) | 2021.08.03 |
[Kotlin] 기존 클래스의 확장함수 사용 (0) | 2021.07.18 |
[Kotlin] Random (0) | 2021.07.16 |