코를린 공부를 intellij 에서

안드로이드 공식 언어인 코틀릭 공부

  • 안드로이드 스튜디오가 아닌 인텔리제이 에서 공부
  • 기본 적인 언어 공부후 안드로이드 스튜디오에서 진행

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") } }
  • 범위(range) 사용하기w
    •  if (x in 1..y-1)
         print("OK")
      
       for (x in 1..5)
         print(x)
      

3. 지속적인 공부가 필요함

PyeongHo

즐겁게 또 즐겁게