ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin문법
    Search: Kotlin Kotlin 2022. 7. 28. 07:50

     

    변수 상수 선언

    val a:String = "상수"
    var b:String = "변수"
    var c = "변수2"

     

    Null값 허용

    var a: String? = null // null 값 허용
    var b: String = null //에러
    
    //null이 아니면 length 를 반환
    val strLength = a?.length // = java Ex: int strLength = a != null? a.length() : null;

     

    if문

    //JavaEx String msg = msgtype == 1 ? "M1" : "M2";
    val msg = if (msgtype == 1) "M1" else "M2"
    
    // 함수 선언 시 if를 아래와 같이 사용가능 하다 
    fun getMsg(msgtype: Int) = if (msgtype == 1) "M1" else "M2"

     

    for문

    val arr1 = arrayOf(1, 2, 3)
    val list1 = listOf(1, 2, 3)
    
    for (index in arr1.indices) {
        println(index)
    }
    
    for (index in list1.indices) {
        println(index)
    }
    
    //100까지
    for (i in 1..100) {
        print("$i ")
    } 
    //99까지
    for (i in 1 until 100) {
        print("$i ")
    } 
    
    //증가값 3
    for (i in 1..10 step 3) {
        print("$i ")
    } 
    
    //10부터 감소
    for (i in 10 downTo 2) {
        print("$i ")
    }

     

    when문

    val c1 = 2
    when (c1) {
        1 -> println("1")
        2, 3 -> println("2 or 3")
        else -> println("not")
    }
    
    val result = when (c1) {
        in 1..100 -> "this 1..100"
        else -> "NOT OK"
    }
    
    fun fun1(type: Int) = if (type == 1) 1 else -1
    when (c1) {
        fun1(c1) -> println("fun1 true")
        else -> println("fun1 false")
    }
    
    
    val c2 = "2"
    when {
        c1 == 4 -> println("4 OK")
        c2 == "2" -> println("c2 = 2")
    }

     

    함수

    fun fun1(name: String, age: Int = 10) = name
    fun fun2(name: String = "홍길동", age: Int): String {
        return name
    } 
    
    
    var name = fun1("홍길동", 10)
    var name = fun1(name = "홍길동")
    var name = fun1(age = 10)
    var name = fun1(age = 10, name = "김찬정")
    // makelist(vararg ts: T) => JavaEx makelist(String... name)
    fun <T> makelist(vararg ts: T): List<T> {
        val result = ArrayList<T>()
        for (t in ts)
            result.add(t)
        return result
    }
    
    val list1 = makelist(1, 2, 4, 8)
    
    val item1 = Array(10) { v -> v + 1 }
    // '*' 스프레드 연산자를 사용해 item1배열의 요소를 풀어서 넘긴다.
    val list2 = makelist(*item1)
    val arr1 = arrayOf(1, 2, 3)
    
    // Array 클래스의 length를 override.
    fun <T> Array<T>.length(): Int {
        return 1
    }
    
    // Array 클래스에 새로운 메소드 추가.
    fun <T> Array<T>.TestMethod(index1: Int, index2: Int): Int {
        return 1
    }
    
    
    val a = arr1.TestMethod(1, 3, 7) // 리턴값 1
    val b = arr1.length() // 리턴값 1

     

    Set 

    val cset = setOf<Int>(33, 22, 11, 23, 31)
    println(cset)
    cset.size
    cset.contains(11)
    cset.isEmpty()
    val mset = mutableSetOf<Int>(33, 22, 11, 23, 32)
    println(mset)
    mset.add(100)
    mset.remove(33)
    mset.removeIf({ it < 22 }) // 22 이하의 숫자를 삭제

     

    Map

    val cmap = mapOf<String, String>(
        "1" to "a", "2" to "b", "3" to "c")
        
    cmap.get("1")
    cmap["1"]
    cmap.keys
    cmap.values
    val mmap = mutableMapOf<String, String>(
            "1" to "a", "2" to "b", "3" to "c")
    
    println("mmap: $mmap")
    mmap.put("4", "d")
    mmap["5"] = "e"
    mmap.remove("1")
    mmap.clear()

    'Kotlin' 카테고리의 다른 글

    Async, Launch, Cancel, CoroutineScope  (0) 2022.07.28
    Kotlin에 Coroutine사용  (0) 2022.07.28
    CoroutineContext, Dispatchers  (0) 2022.07.28
    apply, also  (0) 2022.07.28
    run  (0) 2022.07.28
    with  (0) 2022.07.28
    Kotlin let  (0) 2022.07.28
    Android KTX  (0) 2022.07.28

    댓글