수행할 문장이 1줄인 경우 {} 생략가능
if - else문 자체를 한 줄에 간략화 할 수 있다.
fun main() {
val a = 1
val b = 2
val res = if (a>=b){
println("a>=b")
a //res=a
}
else {
println("a<b")
b//res=b
}
println(res)
}
변수에 if-else문을 이용해 할당하고 블럭과 함께 사용할 수 있다.
이 때 변수에 할당되는 값은 블럭의 마지막 식이다. 위의 예시에서는 if블록의 마지막 문장인 a와 else 블록의 마지막 문장인 b가 res에 할당된다.
fun main() {
var score = 0
var grade = 'N'
println("input score : ")
score = readLine()!!.toInt()
grade = if (score>=90) 'A' else if (score >=80) 'B' else 'C'
println("grdae : $grade")
}
readLine()은 콘솔 입력을 받기 위해 사용한다.
입력받은 내용은 String 취급이다. 따라서 toInt를 사용해준다.
또한 대상이 null이면 toInt()를 사용할 수 없으므로 !!를 사용해서 null이 아니라고 단정지었다. (무조건 문자열을 입력할 것이므로)
fun main() {
var score = 0
var grade = 'N'
println("input score : ")
score = readLine()!!.toInt()
grade = if (score in 91..100) 'A'
else if (score in 81..90) 'B'
else 'c'
println("grdae : $grade")
}
비교 연산자와 논리 연산자를 섞어 쓰면 귀찮고 불편하므로 범위 연산자를 사용하면 편리하다.
switch-case의 간략한 버전이라고 생각하면 된다.
,를 이용해서 조건 2개를 연결할 수 있다.
함수의 반환값을 조건에 사용할 수 있다.
parseInt(s) == x면 일치함을 출력한다.
조건에 범위 연산자를 사용할 수 있다.
!를 앞에 붙이면 부정의 의미로 10..20 범위 외 일 때를 의미한다.
is 키워드를 이용해서 자료형을 조건으로 사용할 수 있다.
또한 when 구문을 이용해서 result 변수에 값을 넣고 있다.
fun main() {
val score = readLine()!!.toInt()
var grade : Char = when(score){
in 90..100 -> 'A'
in 80..89 -> 'B'
else -> 'C'
}
println("score = $score grade = $grade")
}
grdae 변수에 when 구문을 이용해 값을 초기화한다.
when 구문 내부에서는 범위 연산자를 이용한다.
인자 없이 when 구문을 구성할 수 있다.
특정 인자에 제한 없이 다양한 조건과 실행문을 구성한다.
var grade : Char = 'N'
when {
score in 90..100 -> grade = 'A'
score in 80..99 -> grade = 'B'
else -> grade = 'C'
}
println("score = $score grade = $grade")
조건 코드가 길어지지만, 사용할 변수가 2개 이상이라면 이 방법이 더 편리할 수 있다.