728x90
728x90

kotlin 9

코틀린 기초 - 클래스 기초

"코틀린 완벽 가이드"라는 책을 보면서, 필요한 부분만 간추렸습니다. 버전이 달라지면서 변경된 부분이나, 잘못된 부분이 있을 수 있고 혹시 발견하게 되시면 지적은 언제나 환영합니다. 클래스 정의 class Person { var firstName: String = "" var familyName: String = "" var age: Int = 0 fun fullName() = "${this.firstName} ${this.familyName}" fun showMe() { println("${this.fullName()}: ${this.age}") } } 자바는 package private 이었지만, 코틀린 클래스는 기본적으로 public 자바와 달리, 코틀린에서는 클라이언트 코드를 바꾸지 않아도 원하는..

코틀린 기초 - 기초 문법

"코틀린 완벽 가이드"라는 책을 보면서, 필요한 부분만 간추렸습니다. 버전이 달라지면서 변경된 부분이나, 잘못된 부분이 있을 수 있고 혹시 발견하게 되시면 지적은 언제나 환영합니다. 기본 문법 일반 세미콜론으로 끝내지 않는다. 기본 스타일이고, 권장 스타일이니 이를 따르자. 타입 추론을 하며, 강타입 언어다. 주석 자바랑 기본적으로 동일함 단, 자바와 다르게 코틀린은 multiline 주석을 내포할 수 있음 변수 정의 val 불변 var 가변 자바와 다르게 코틀린은 대입문 연쇄(a = b = c )를 사용할 수 없다. 값을 돌려주지 않는다. 복합 대입 연산에도 해당한다. 모든 코틀린의 타입은 근본적으로 클래스 정의를 기반으로 만들어진다. a = 'a' 인 변수의 a + 5 대해서, 자바 : 결과를 암시적..

코틀린(Kotlin)에서 중첩 반복문 빠져나오는 방법

과거에 입문 언어로 선택되었던 언어들과 현재 많은 사람들이 쓸 줄은 아는 언어들, C, C++, Java 같은 것들은 중첩반복문을 빠져나오려면 별도의 플래그가 필요했다. 프로그래밍 자체에 서툰 사람들은 이 플래그 개념에서 헤매는 경우가 많았다. 적어도 필자 경험 상, 많은 학부생이 그랬다. 반복문이라는 것이 처음 접하는 사람에게는 어디까지 반복되는지 감이 잘 안 오는 제어문인 데다가, 제어문의 범위에 대해서 완벽히 숙지되지 않은 사람들에게는 반복문을 중단시키는 것 자체가 이해가 되지 않는 경우가 많다. 반복문 내부에 있는 반복문에서 break로 반복 작업을 중단시킨다고 하더라도, 그것을 둘러싸고 있는 반복문(여기서는 바깥 반복문이라고 하겠다.)을 중단시키는 것은 아니다. 따라서 바깥 반복문에 대해서 계속..

코틀린(Kotlin)으로 작성한 안드로이드 블루투스 리모컨 예제

https://twinparadox.tistory.com/132 위 링크에 올린 블루투스 리모컨으로 조종하는 아두이노 선풍기에 어플리케이션 코드가 없었다. 프로젝트를 정리해 올리면서 아두이노 스케치 코드는 올렸는데, 어플리케이션 코드는 찾지 못해서 올리지 못한 상태였는데 최근 코틀린을 배우면서, 코틀린도 연습할 겸, 잃어버린 프로젝트의 주권(?)을 되찾을 겸, 리모컨을 다시 만들었다. 소스에 대해 간략히 설명하자면, SelectDeviceActivity는, 블루투스 장치를 검색 및 선택하는 액티비티고, ControlActivity는 해당 장치를 컨트롤하는 액티비티로, 여기서는 리모컨 역할을 하는 액티비티다. 깃허브 주소 : https://github.com/Twinparadox/ArduinoFan-wit..

코틀린(Kotlin) 조건문(When, if)

코틀린에서의 기본적으로 사용할 수 있는 조건문은 크게 두 가지, if와 when이다. if-elseif-else 구문은 기존의 언어들의 형태와 동일한 방식으로 사용할 수 있다. if(조건문) {내용...}else {내용...} whenwhen이라는 표현이 조금 색다른 표현처럼 느껴질 수 있는데 이는 다른 언어의 switch-case 구문이다.switch-case 구문에서 변수의 범위를 지정하는 일이 귀찮은데, 코틀린에서는 이 부분을 많이 개선한 것 같다. when(x) {1 -> { 내용... }2 -> { 내용... }else -> { 내용... }} when(x) {1, 2 -> { 내용... }in 10..30 -> { 10에서 30까지 }!in 10..30 -> { 10에서 30까지에 포함되지 않..

코틀린(Kotlin)을 이용하면 findViewById()를 사용할 필요가 없다

코틀린에서는 더 이상 findViewById()를 사용하지 않아도 된다.정확히는 Kotlin Android Extension만 적용시키면, 레이아웃을 import 시키는 것만으로도 XML에서 정의내린 위젯들을 Id로 읽어들여 하나하나 변수로 만들어줄 필요가 없어졌다. textviewID라는 ID를 가지는 요소를 XML에서 정의했다고 치자.자바에서는 말할 것도 없이 findViewById()를 사용하는 방법부터 써먹을 것이고, 코틀린에서도 전통적인 자바의 방식을 사용하는 사람들이 많을 것이다. TextView textViewID = findViewById(R.id.ui_text_hello) as TextView textViewID.text = "기존의 방식"이 방식이 아예 틀린 방식이거나 구 시대의 잔재라..

안드로이드 예제 - 코틀린으로 로그인-메뉴 화면 만들기

코틀린으로 처음 모바일 프로그래밍을 입문하는 사람들은 관련 책을 참고하는 것을 추천한다.필자가 참고하는 책은 Do It! 안드로이드 앱 프로그래밍으로, 꽤 오래 전에 산 책이라서 코틀린이 아닌 자바로 써진 책이다. 코틀린으로 써진 책은 아니지만 이렇게 간단한 어플 만들기 예제들이 많이 있어서 예제 아이디어를 얻는 용도로 사용하고 있다. 책으로 코틀린 관련 지식들을 습득할 수 없으니, 부족한 부분들은 자바의 소스들을 가져다 넣고 코틀린으로 바꿔서 해당 기능이 어떻게 사용되는지 확인하거나, 구글링으로 해결하고 있다. 이번 예제는 '로그인 화면과 메뉴 화면 간단 만들기'라고 되어 있다. 서버/클라이언트 통신을 통해서 로그인 확인을 하지는 않고, 앱에 미리 저장해둔 아이디와 비밀번호를 비교하는 작업으로 간단하게..

Kotlin] lateinit과 lazy

lateinit과 lazy는 지연 초기화를 위해 사용함.클래스 생성 동시에 사용하지 않는 변수에 대해서는 늦게 초기화할 때 사용하며, null은 필요한 경우에 한해서 명시. lateinitvar에 사용하고, var이기 때문에 초기화 값을 변경할 수 있음.null을 통해서 초기화하지 않고, 초기화 전까지 해당 var 변수에는 접근하지 못함.변수에 대해서 getter, setter를 정의할 수 없음.모든 변수에서 가능한 것은 아니며, primitive type에 대해서는 사용 불가능. lazyval에 사용하고, 호출 시점에 by lazy 정의로 초기화.val에서만 사용하기 때문에 불변이며, 초기화를 위해서 함수명을 한 번이라도 적어줘야 함.lazy을 사용하는 경우 기본 Synchronized로 동작. 값의 ..

코틀린(Kotlin) 함수, 변수 정의

코틀린을 입문하는 사람들이 기존 Java로 안드로이드 개발을 하던 사람이거나, C#을 이용해 자마린을 쓰는 사람 등 다양한 사람이 있을 것 같다. 앞서 말한 두 언어와 코틀린의 가장 큰 차이점이라면 아무래도 세미콜론(;)을 사용하지 않는다는 것이다. 함수 정의 방법함수는 fun 키워드로 정의하며 함수 몸체 자체가 식(Expression)일 때는 return을 생략할 수 있음. fun sum(a: Int, b: Int) Int {return a + b}fun sum(a: Int, b: Int) = a + b 리턴 타입을 지정하는 방식이나, 기존의 인자 선언 방식이 C++, Java 같은 언어와는 방식이 약간 다르지만 형식 지정이 없는 것은 아니다. 경우에 따라서 함수의 리턴 값이 없는 경우에는 Unit(O..

728x90