본문 바로가기

Kotlin29

Kotlin : local, infix, inline functions, Operator Overloading Local Functions (지역 함수) 함수 안에서 scope 내에 지역 변수를 선언해서 사용할 수 있듯이 함수의 scope 내에서 지역 함수를 선언하여 사용할 수 있다. 당연히 해당 scope 밖에서는 지역 함수를 사용할 수 없다. 내부에서 사용할 때 선언하여 사용할 수 있다. [Code] [결과] Local Return [Code] 위의 코드를 실행하면 어떻게 될까? [결과] forEach문 안에서 return을 하면서 함수 return이 되어서 함수가 종료된다. 이때 forEach문 안에서만 return을 하려 했다면 return@forEach를 사용하면 된다. @ 뒤에 return 할 scope를 지정해주면 의도한 대로 사용이 가능하다. [Code] [결과] 아까와는 다르게 main 함수가 마.. 2020. 5. 25.
Kotlin 기초 문법 6 - Nullable, null, null check 오늘은 Swift의 Optional, nil과 비슷한 개념인 Nullable, null에 대해 알아볼 것이다. Swift와 비교한 부분은 다른 글에 따로 포스팅 했으니 필요하다면 참고 바란다. null 먼저, Kotlin에서의 null은 다른 언어에서의 null 개념과 비슷하다고 생각하면 된다. null은 변수가 실제로 아무 객체도 가리키고 있지 않다는 뜻이다. C언어에서도 메모리를 가리키는 포인터가 실제로 가리킬 객체나 자료가 없을 때 NULL을 가질 수 있듯이 Kotlin도 null을 할당할 수 있다. 한 가지 차이점은 C언어에서의 NULL은 값이 0으로, 0번 주소가 되고 이것은 가리키는 메모리가 없다는 뜻으로 인식된다. 하지만 Kotlin에서의 null은 0이 아니라 null이 따로 정의되어 있다.. 2020. 5. 24.
Swift / Kotlin - 유사 문법 비교 2 가장 기본적인 개념들에 대한 Swift와 Kotlin의 구현 문법들 정리 - 2 Function (함수) [Swift] [Kotlin] [결과] 기본적인 함수의 모습은 위와 같다. Tuple Return (튜플 반환) [Swift] [Kotlin] 튜플 타입으로 데이터를 반환할 때는 위와 같이 사용하면 된다. 개인적으로는 튜플의 경우 Swift가 사용하기 더 편리하다. Argument 여러 개 받기 [Swift] [Kotlin] [결과] 함수의 argument를 여러 개 받고 싶을 경우(몇 개를 받을 지 모르는 경우), 위와 같이 사용하면 된다. Swift는 타입 뒤에 "..."을 붙여주면 되고, Kotlin의 경우는 인자의 이름 앞에 vararg를 붙여주면 된다. Function Type (함수 타입).. 2020. 5. 23.
Kotlin 기초 문법 5 - 예외, 예외 처리, throw 예외 (Exception) 예외는 프로그램이 실행되던 중에 예상하지 못한 상황이 발생하는 경우를 말한다. 숫자가 아닌 문자열 값을 Integer로 타입 변환하려 하거나, 실제로 할당되지 않아서 메모리에 없는 값을 참조하려 하는 등의 경우에 예외가 발생한다. 예기치 못하고 대처해두지 않은 예외가 발생하면 앱은 에러 메세지를 남기고 종료된다. [Code] [결과] 일반 문자열을 Int로 변환하려 했을 때 예외가 발생하는 코드를 작성해보았다. "str.toInt()"가 실행되면서 예외가 발생한 것을 확인할 수 있다. 로그를 확인해보면 main 쓰레드에서 NumberFormatException이 발생했다고 나온다. 그 밑에는 콜 스택도 함께 출력되어 있는데, java.lang.Integer.parseInt에서 .. 2020. 5. 22.
Kotlin - Sealed Class Kotlin에는 sealed class라는 것이 있다. 이를 이용하여 콘크리트 타입으로 추상 클래스를 확장하여 쓸 수 있다. Swift에서는 enum을 좀 더 강력하게 사용할 수 있는데, 이번 글에서는 sealed class를 이용하여 Kotlin에서도 비슷한 작업을 편하게 할 수 있는 것에 대해 알아볼 것이다. [Swift] 먼저, Swift를 잠시 살펴보면 Swift에서는 이런 식으로 enum 안에 각각 다른 필요한 여러 타입들을 받아서 사용할 수 있도록 선언이 가능하다. 같은 음식 타입이지만 음식에 따라 담고 있는 정보가 다를 수 있다. [Kotlin] Kotlin에서는 sealed class를 이용하여 위와 같이 사용할 수 있다. 이게 어떨 때 편리한지, 어떻게 사용하는지는 다음의 활용 예시를 통.. 2020. 5. 21.
Kotlin 기초 문법 4 - 함수, 매개변수, 인자, 가변 인자 이번 포스팅에서는 Kotlin에서 함수를 정의하고 사용하는 방법과, 매개변수(Parameter), 인자(Argument), 기본 인자, 가변 인수에 대해 다뤄볼 예정이다. 함수 (Function) 앞선 기초 문법 포스팅들에서 사용했던 main() 함수도 함수의 한 종류이다. 작업의 기본 단위인 함수에 대해 알아보자. 함수는 기본적으로 위의 형태로 선언을 한다. fun 키워드와 함수 이름, scope는 함수를 선언하기 위해서는 꼭 작성해줘야 한다. 파라미터는 필요 없는 경우 생략할 수 있으며, 반환 타입도 값을 반환하지 않는다면 명시할 필요가 없다. 다만, 반환 타입을 생략할 경우에는 반환 타입이 자동으로 Unit으로 지정된다. Unit은 다른 언어에서의 void와 비슷한 개념이라고 생각하면 된다. [Co.. 2020. 5. 20.