신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

코틀린에서 메소드를 만드는 방법을 알아보고, 반환값이 있는 메소드 생성하는 법과 반환값이 없는 메소드 생성하는 법을 살펴본다. 그리고, 자바와 달리 코틀린에서만 사용가능한 메소드 정의 법(식이 문장인 메소드)을 살펴본다.

 

 

코틀린 메인 메소드 생성

코틀린에서는 기본적으로 메소드를 선언할때 fun이라는 키워드를 사용한다. 그리고 아래와 같이 메인 메소드를 선언 할 수 있다.

fun main(args:Array<String>){
    println("Hello, World!")
}​

 

자바와 차이점이 있다면, 코틀린에서는 최상위에서 메인함수, 일반 함수를 선언 할 수 있다. 자바에서는 class안에 메소드를 사용할 수 있지만, 코틀린에서는 클래스 밖의 최상위 레벨에서 선언이 가능하다는 뜻이다.

 

그리고, 파라미터 이름 뒤에 타입을 쓴다.

 

참고. println()

자바에서는 System.out.println()을 사용하여 콘솔 출력을 하지만, 코틀린에서는 println()을 이용하여 콘솔 출력이 가능하다. 물론 코틀린은 자바 기반 언어이기 때문에, System.out.println()으로도 할 수 있지만, 굳이 사용할 필요는 없는 것 같다....

 

참고. 세미콜론

코틀린에서는 파이썬과 같이 세미콜론(;)을 사용하지 않는다. 자바에서는 하나의 코드가 완성되면 끝에 세미콜론을 붙여야하지만, 코틀린은 그럴 필요 없다. 사용한다고 해서 에러가 발생하는 것은 아니지만, 코틀린에서 원하는 방식의 프로그래밍 방법은 아닌듯하다.

 

위에서는 return값이 없는 메소드에 대해 살펴봤고, 아래에서는 return값이 있는 메소드를 본다.

 

return값이 있는 메소드

fun 메소드이름(변수: 타입 ...): return타입{ ... }과 같은 형태로 작성한다. 메소드 이름 뒤에 ": [return 타입]"을 붙여 return 메소드를 만들 수 있다. 아래 예제를 통해 이해 할 수 있을 것이다.

// return 값이 있는 함수
fun max(a: Int, b: Int): Int{
    return if(a > b) a else b
}​

 

위 메소드를 더욱 간결하게 작성하는 방법이 있다. 식이 본문인 함수인데, 아래에서 살펴본다.

 

식이 본문인 함수

식 본문으로 변환(Convert to expression body)한 함수를 쉽게 설명하면, 메소드를 한줄의 식으로 생성이 가능하다.

fun max2(a: Int, b: Int): Int = if(a > b) a else b​

등호(=)를 사용하여 중괄호({})없이 하나의 문장으로 메소드를 만들 수 있다. 

 

식이 본문인 함수에서는 결과값에 대한 변수 타입을 생략이 가능하다.

fun max3(a: Int, b: Int) = if(a > b) a else b​

코틀린 컴파일러의 타입추론(Type inference)를 통해 알아서 타입을 추론하여 타입을 정해준다.

 

코드를 통해 한눈에 살펴보기

// return 값이 없는 함수
fun main(args: Array<String>){
    println(max(1,3))
    println(max2(4,100))
    println(max3(30, 20))
}

// return 값이 있는 함수
fun max(a: Int, b: Int): Int{
    return if(a > b) a else b
}

// 위 함수를 좀 더 간결하게 작성 가능
// 등호(=)를 사용하여 표현이 가능하다.
fun max2(a: Int, b: Int): Int = if(a > b) a else b

// 식이 본문인 함수의 경우는 반환 타입을 생략이 가능하다.
// 타입 추론(type inference)를 통해 컴파일러가 알아서 타입을 정해준다.
fun max3(a: Int, b: Int) = if(a > b) a else b​

1~6번째 줄 : return값이 없는 함수(aka. 메인함수)

8~11번째 줄 : return 값이 있는 함수

13~15번째 줄 : return값이 있고, 식이 본문인 함수

17~19번째 줄 : return 값이 있고, 식이 본문이면서 결과타입을 생략한 함수

 

본 글은 Dmitry Jemerov, Svetlana Isakova의 "Kotlin in action" 책을 참고하여 작성한 글입니다.

 

다른 글

2019/02/03 - [Language/Kotlin] - 코틀린(Kotlin)이란 무엇인가? 정적 타입 지정 언어

 

코틀린(Kotlin)이란 무엇인가? 정적 타입 지정 언어

코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어입니다. 간결하고, 실용적이며 자바와의 상호운용성(interoperability)을 중시하는 언어입니다. 현재 자바가 사용되는 곳이라면 거의 대부분 코틀린을..

hongku.tistory.com

2019/01/28 - [Algorithm/백준 온라인 저지] - 백준 1000번 코틀린(Kotlin)으로 풀어보기

 

백준 1000번 코틀린(Kotlin)으로 풀어보기

이 글은 직접 풀어보고 채점까지 마친 뒤, 작성한 글입니다. 궁금한 점 있으면 댓글 남겨주세요! A+B 1000번은 매우 쉬운 문제입니다. 이번에 Kotlin(코틀린)을 공부하게 되서 천천히 쉬운문제부터 풀어보려합니다..

hongku.tistory.com

2019/02/04 - [Language/Kotlin] - 코틀린의 변수 사용법 및 val과 var의 차이점

 

코틀린의 변수 사용법 및 val과 var의 차이점

코틀린에는 변수를 생성할 때 타입을 생략을 해도되고, 생략을 하지 않고 명시해서 생성 할 수 있다. 아래 예제를 살펴본다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 fun main(args: Array){ //..

hongku.tistory.com

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기