안드로이드 공식 언어인 코틀릭 공부
- 안드로이드 스튜디오가 아닌 인텔리제이 에서 공부
- 기본 적인 언어 공부후 안드로이드 스튜디오에서 진행
0. 목적
- 기본적인 문법및 사용법을 익혀 보자 -[http://thdev.tech/categories.html#Kotlin-ref] (http://thdev.tech/categories.html#Kotlin-ref)
1. 인텔리제이에서 코틀린 실습하기
- https://news.realm.io/kr/news/kotlin-1/
- 인텔리제이 실행
- Create New Project
- kotlin(java)
- create -> use library from plugin 체크
- 상단 오른쪽 위에 SDK 선택에서
- JDK -> 설치된 JDK 폴더 경로 입력
- next
- 프로젝트 이름 설정
- 빈 프로젝트 생성 완료
- src 폴더에서 오른쪽 버튼
- new -> kotling file/class 선택
- app 파일 생성(app.kt)
- 아래 처럼 메인 코드 입력
fun main(args: Array<String>) {
println("Hello Hello!")
}
- app.kt 파일에서 마우스 오른쪽 버튼으로 run app.kt 실행
- 실행 창에 메인 함수 실행을 확인 할 수 있습니다.
2. 기본 내용을 확인 하기
- http://theeye.pe.kr/archives/tag/%EC%BD%94%ED%8B%80%EB%A6%B0
- 코틀린 함수 사용
-
첫번째 두번째 함수는 그럭 저럭 넘어가면 되고 ```kotlin fun sum(a:Int , b:Int): Int{ return a+b }
// Single Expression Function 이런건 사용하지 말자 한 두줄 줄인다고 코드가 좋아질거 같진 않다. fun sum2(a:Int , b:Int) = a+b
fun printSum(a:Int, b:Int):Unit { print(a+b) } ```
-
세번째 함수 Unit를 void 라고 생각하자
- 코드의 내부 구현은 println을 한번 호출했을 뿐 어떤 결과를 반환한다거나 하는것을 생각하기 어렵습니다. 이런 경우에 println은 Unit을 리턴합니다. 이런 부분은 Scala와 비슷한 부분이 있어 보입니다. Kotlin은 모든 함수 구현이 반환값을 가지며 return을 명시적으로 써줄수도 생략할 수 도 있습니다. 반환이 없어 보이는 코드의 경우에는 Unit을 리턴하며 이 Unit은 Java의 void와 같다고 생각하시면 됩니다. 사실은 반환값이 없는경우를 Unit을 리턴한다고 생각하시면 될 것 같습니다.
-
- 변수 선언
- 상수는 val
-
변수는 var
```kotlin // Immutable val a: Int = 1 val b = 1 val c: Int c = 1// Mutable var x = 5 x += 1 ```
- 조건문
- 자바 처럼 기본 조건문을 사용하자
- null
-
```kotlin val x: String = null // error val x: String? = null // ok
val x:Int? = 3 x + 4 // error if (x != null) x + 4 // ok
val x: Int? = null val y: Int = x ?: 0 // x ? x : 0 x?.rangeTo(3) // null y.rangeTo(3) // 0..3 ```
-
x?.rangeTo(3) 를 이용하면 체인형 함수 실행에 유리 하나의 결과만 널이라도 바로 null 반환
-
- types Any
- 컴파일러가 고생이 많아 보입니다.
- obj is String 만 성공해도 다음 블럭에서는 obj 가 문자열 클래스 이다.
-
if 문 조건은 왼쪽 부터 실행 된다. ```kotlin
fun getStringLength(obj: Any): Int? { if (obj is String) // 여기서 obj가 자동으로 String으로 캐스팅됩니다. return obj.length return null // 여기는 여전히 obj의 타입은 Any입니다. }if (obj !is String) { return … } return obj.length
if (obj is String && obj.length > 0) { … }
var x: Any = “hello” println(x) // hello가 출력
x = 3 println(x) // 3이 출력 ```
- 반목문 및 콜렉션
- 람다 가능
//val collection: List<String> = ... val collection: MutableList<String> = ArrayList() collection.add("1") collection.add("2") collection.add("3") collection.add("4") collection.add("5") val array = arrayListOf<String>() array.add("11") array.add("12") array.add("13") for (element in collection) println(element) var i = 0 while (i < collection.size()) println(collection[i++]) collection.forEach { e -> println(e) } collection.forEach { println(it) }
- when
- Any 타입일때 케이스문처럼 사용이 가능한다.
kotlin fun cases(obj: Any) { when (obj) { 1 -> print("One") "Hello" -> print("Greeting") is Long -> print("Long") !is String -> print("Not a string") else -> print("Unknown") } }
- Any 타입일때 케이스문처럼 사용이 가능한다.
- 범위(range) 사용하기w
-
if (x in 1..y-1) print("OK") for (x in 1..5) print(x)
-
3. 지속적인 공부가 필요함
- 현재 여기까지 진행하고 조금씩 앱을 만들어 보도록 하겠습니다.
- 코틀린 문서 링크 입니다.
- http://javacan.tistory.com/entry/Korea-Kotlin-Ref-Doc