티스토리 뷰
Author: 니용
이전에 Java를 사용하면서 대표적으로 많이 사용하였던 것이 바로 함수(메서드)였습니다.
Kotlin에서도 Java보다 더 쉽게 함수를 사용할 수 있습니다.
보통 Java는 public class ClassName을 선언하고 그 아래에 사용을 했어야 했는데요, Kotlin은 class 선언이 따로 필요 없이 사용이 가능합니다.
이전 글에서도 보시다시피 프로젝트를 실행시키는 메인 함수가 class 선언 없이 3줄 내로 끝났었습니다.
fun main(args: Array<String>) {
println("Say Hello")
}
함수는 fun 키워드로 정의합니다.
함수가 있다면 파라미터도 존재하는데 파라미터를 선언하는 형태는 Java와 약간 다릅니다.
기본적인 타입과 선언에 대한 내용은 여기서 자세히 기술하였습니다.
Java Style: 접근제어자 (static) 변수타입 변수명
public String methodName(String param) {
return param + "result";
}
private void methodVoid() {
...
}
protected Object get(Map<String,Object> map, String key){
return map.get(key);
}
Kotlin Style: (접근제어자) 변수명: 변수타입
(public) fun methodName(param: String) : String {
return param + "result"
}
private fun methodVoid(): Unit {
...
}
fun get(map: Map<String,Any>, key: String) : Any? {
return map[key]
}
위 두 개의 코드는 같은 코드를 샘플로 둔 것입니다. 차이가 확실히 보이시죠?
Kotlin에서는 기본적으로 접근제어자를 public을 지정하기 때문에 public 접근제어자를 설정하지 않아도 됩니다.
private는 지원을 하지만, protected는 지원하지 않습니다.
두 번째로 특이한 것은, void 대신에 Unit이라는 클래스를 사용합니다. (Void 클래스도 존재합니다.)
Unit은 생략 가능하고 이와 같이 쓸 수도 있습니다.
private fun methodVoid() {
...
}
세 번째로 Object 타입을 Any로 변경해서 사용 가능합니다.
마지막으로는 3번째 함수에서 표시된 Any?인데요 '?'가 의미하는 바는 Nullable입니다.
이는 다른 글에서 다뤄보겠습니다.
축약형 함수와 추론
두 번째로 살펴볼 점은 축약형 함수가 가능하다는 것입니다.
fun sum(a: Int, b:Int): Int {
return a+b
}
int값 두 개를 받아 더해주는 함수인데요, 이를 축약하면 간편해집니다.
fun sum(a: Int, b:Int) = a+b
함수의 몸체가 표현식(Expression)인 경우 return이 생략됩니다. 이러한 경우 return type은 int 타입으로 추론됩니다.
축약형은 밑에 적은 것과 같이 조건식이 붙은 경우 더 유용하게 쓸 수 있습니다.
// 기존 함수
fun maxOf(a: Int, b: Int): Int {
if(a>b) {
return a
} else {
return b
}
}
// 축약형
fun maxOf(a: Int, b: Int) = if(a>b) a else b
'Server' 카테고리의 다른 글
Kotlin의 생성자와 data class (0) | 2020.06.29 |
---|---|
Kotlin의 Any와 Nullable (1) (0) | 2020.06.29 |
Kotlin의 Control Flow (0) | 2020.06.26 |
[Spring] @Bean과 @Component의 차이 (0) | 2020.06.25 |
Kotlin 변수의 Wrapper Type (0) | 2020.06.25 |
Kotlin 설치법 (0) | 2020.06.24 |