Develop/Kotlin

[Kotlin] 2 - 조건문과 조건식

Linitial 2020. 4. 8. 21:47
반응형

1. 조건문과 조건식

1.1 비교연산자

  • 종류
    • <
      • 왼쪽 값이 오른쪽 값보다 작은지 검사한다.
    • <=
      • 왼쪽 값이 오른쪽 값보다 작거나 같은지 검사한다.
    • >
      • 왼쪽 값이 오른쪽 값보다 큰지 검사한다.
    • >=
      • 왼쪽 값이 오른쪽 값보다 크거나 같은지 검사한다.
    • ==
      • 왼쪽 값이 오른쪽 값과 같은지 검사한다.
    • ===
      • 왼쪽과 오른쪽의 두 개의 인스턴스가 같은 객체를 참조하는지 검사한다.
    • !=
      • 왼쪽 값이 오른쪽 값과 같지 않은지 검사한다.
    • !==
      • 왼쪽과 오른쪽의 두 개의 인스턴스가 같은 객체를 참조하지 않는지 검사한다.

 

1.2 논리연산자

  • 종류
    • &&
      • AND 논리
      • 왼쪽과 오른쪽 표현식 모두 true 일때만 true가 되며 이외는 false
    • ||
      • OR 논리
      • 왼쪽과 오른쪽 표현식 중 하나가 ture 면 true 가 됨(모두 false 일때만 false)
    • !
      • NOT 논리
      • true 일때는 false, false 일때는 true 가 됨.

 

1.3 if/else 문

    var point = 1
    
    if (point == 100) {
        println("100점 입니다")
    } else if(point >= 90) {
        println("90점 이상 입니다")
    } else if(point >= 80) {
        println("80점 이상 입니다")
    } else {
        println("현재 점수는 하위권 입니다.")
    }

 

1.4 조건표현식

    var point = 1
    
    var result = if (point == 100) {
        "100점 입니다"
    } else if(point >= 90) {
        "90점 이상 입니다"
    } else if(point >= 80) {
        "80점 이상 입니다"
    } else {
        "현재 점수는 하위권 입니다."
    }
    
    println(result)

조건에 따라 일일히 println() 코드를 추가하는 것은 매우 비효율적인 작업이 된다.


그러나 코틀린은 기존의 조건문에서 특정 값을 return 받을 수 있다.


이러한 문법을 조건 표현식(conditional expression) 이라고 한다.

 

1.5 범위

    var point = 1
    
    var result = if (point == 100) {
        "100점 입니다"
    } else if (point in 90..99) {
        "90점 이상 입니다"
    } else if (point in 80..89) {
        "80점 이상 입니다"
    } else {
        "현재 점수는 하위권 입니다."
    }
    
    println(result)

if/else 로 작성했던 모든 조건은 point 의 정수값에 따라 검사되고 분기된다.


이를 표현할 수 있는 더 좋은 방법이 있다.


코틀린에서는 연속되는 값을 나타낼 수 있는 범위(range) 를 제공한다.


"in" 키워드 와 "정수..정수" 키워드를 이용하여 일정한 범위를 나타낼 수 있다.

 

1.6 when 표현식

    var point = 1
    
    var result = when(point) {
        100 -> "100점 입니다"
        in 90..99 -> "90점 이상 입니다"
        in 80..89 -> "80점 이상 입니다"
        else -> "현재 점수는 하위권 입니다."
    }
    
    println(result)

when 표현식은 코틀린에서 사용할 수 있는 또 다른 제어 흐름 메커니즘이다.


if/else 처럼 검사할 조건들을 작성할 수 있으며, 조건이 true 일때만 해당 코드가 실행된다.


코드가 더욱 간결해지며, 세 개 이상의 조건분기에 특히 적합하다.


좀 더 간결해진 Java 의 switch/case 문으로 볼 수도 있겠다.

 

 

2. 문자열 템플릿

2.1 기본형

    var point = 79
    
    var result = when(point) {
        100 -> "100점"
        in 90..99 -> "90점 이상"
        in 80..89 -> "80점 이상"
        else -> "하위권"
    }
    
    println("현재 점수는 $result 입니다.")

Java 에서는 특정 출력문에 변수와 함께 사용하기 위해서는 형변환을 이용하여 + 키워드를 사용하여야 하지만


코틀린에서는 문자열 템플릿(string template)이 있어서 더 편리하게 출력문을 작성 할 수 있다.


"$" 기호가 문자열 템플릿을 나타내며, "" 내부의 문자열에 val 이나 var 변수의 값을 넣을 수 있다.

 

2.2 표현식

    var point = 88
    
    var result = when(point) {
        100 -> "100점"
        in 90..99 -> "90점"
        in 80..89 -> "80점"
        else -> "하위권"
    }
    
    println("현재 점수는 $result ${if(point in 80..99) "이상" else ""} 입니다.")

코틀린은 문자열 템플릿 내에서 표현식을 사용 할 수 있다.


"${}" 키워드 안에 원하는 표현식을 넣을 수 있다.

반응형