728x90

코틀린 강의 시리즈는 이미 자바 문법을 어느정도 안다는 가정하에서 진행을 한다.

따라서 자바 문법을 모르는 상태에서 코틀린의 강의를 들을 수 없으므로 자바부터 배워오길 바란다.

또한 강의의 전반적인 내용은 코틀린에 대한 새로운 문법을 소개하며 자바와 어떻게 다른지를 비교한다.

코틀린은 자바와 같은 jvm족이므로 둘의 협업역시 중요하므로 둘이 어떻게 호환이 되는지도 다루게 된다.

그리고 이 강의는 코틀린 강의지 안드로이드 강의가 아니다. 안드로이드 강의는 알아서하고 코틀린을 적용시키는건 본인 재량이다.


필자는 강의시 원래 IDE에 대한 설명을 최대한 배제하려한다.

필자 블로그의 카테고리는 programming과 usage 둘로 나뉘어 있다.

따라서 프로그래밍은 programming에, IDE및 사용법들은 usage에 나뉘는 방식으로 포스팅을 해왔다.

그런데 코틀린은 조금 상황이 다른게 이미 자바를 알고 있고 자바와 협업한다는 가정하에서 포스팅을 하기에

주변상황에 대한 설명이 들어갈 확률이 매우 높다고 할 수 있다.

따라서 IDE나 사용법에 대한 설명을 같이 포스팅한 경우가 많다. 물론 보는 입장에선 이게 더 도움은 될것이다.

필자가 사용하는 IDE는 IntelliJ가 될것이다. 자바든 코틀린이든 둘다 IntelliJ로 하게 될것이다.


참고:

코틀린 컴파일러 콘솔로 실행하기

코틀린 프로젝트만들기 - InteliiJ

코틀린 프로젝트만들기 - Eclipse


이제 함수에 대해서 알아보도록 하자. 왠지 다른 강의와는 거꾸로 가는듯한 느낌이 든다.

자바에서는 함수에 대한 자시자가 따로 존재하지 않았다. 이는 아마 C에서 내려오는 관습인거 같다.

필자는 이게 딱히 장점인지 단점인지는 잘모르겠다. 많이 봐서 익숙해져서 그런거 같다.

그러나 처음 배우는 입장에서는 뭐가 함수고 뭐가 메소드인지 보기만해서 구별하기좀 힘든거 같다.

그래서 언어들 중에서는 함수를 함수라고 명시적으로 지시하는 경우가 많다. vb.net도 그렇고 python도 그렇고 자바스크립트도 그렇다.

보통 함수를 뜻하는 지시자는 func혹은 function등이 많았는데 특이하게도 코틀린은 fun이다.

예전에는 함수 지시자를 읽을때 "펑크"라고 읽는 적이 많았는데 코틀린에서는 읽을 때 "펀"이라고 읽는 경향이 있다.


간단한 함수를 만들어보자.

fun div(a:Float,b:Float) :Float{
return a/b
}

함수를 이 때까지 많이 만들어 봤으니 만드는 방법은 알겠지만 다시 한번 알아보자.

함수는 지시자로 fun을 사용하며 파라메터에 타입을 지정해주고 반환타입도 지정해줘야 한다.

자바에서는 안되지만 코틀린에서 되는게 하나있다. 바로 디폴트 파라메터를 지정하는 것이 가능하다.

fun main(args: Array<String>) {
println(div())
}

fun div(a:Float=10.0f,b:Float=4.0f) :Float{
return a/b
}

자바에서는 디폴트 매개변수가 사라졌었는데 이는 장점과 단점을 같이 가지고있었다.

이게 오버로딩과 모호성 발생확률이 적다는 장점이 있었지만 아무래도 편의성에서는 불편하다.

프로그래밍에서 저울질을 하다보니 아무래도 불편함이 더 대두됬던거 같다.

그리고 자바에서는 파라메터 매칭을 순서매칭만 가능했지만 코틀린은 파라메터매칭 역시 가능하다.

fun main(args: Array<String>) {
println(div(b = 7.0f, a = 3.0f))
}

fun div(a: Float = 10.0f, b: Float = 4.0f): Float {
return a / b
}

이는 파이썬에서도 가능한 방식이다.

코틀린은 함수를 만약 간단하게 만든다면 더더욱 간결하게 짤 수 있게 만들어 준다.

fun div(a: Float = 10.0f, b: Float = 4.0f): Float = a / b

만약 내용이 한 줄이라면 저렇게 간단하게 만들 수 있다.

만약 리턴타입=파라메터타입이 모두 일치한다면 더더욱 줄이는게 가능하다.

fun div(a: Float = 10.0f, b: Float = 4.0f) = a / b

한줄짜리 코드는 이제 이렇게 줄여줄 수 있다.

'Programming > Kotlin' 카테고리의 다른 글

[Kotlin-11]vararg(가변인자)  (0) 2017.11.10
[Kotlin-10]object class(익명클래스)  (0) 2017.11.10
[Kotlin-09]sealed class  (0) 2017.11.10
[Kotlin-08]data class  (0) 2017.11.10
[Kotlin-07]상속(interface)  (0) 2017.11.10

+ Recent posts