[kotlin] expression & statement, control-flow(when)
1. expression(표현식) and statement(문장)
표현식이란?
- 변수, 연산자로 구성되어 단일 값을 리턴하는 표현을 의미한다
- if, when, try는 표현식에 해당한다
문장이란?
- 수행할 작업을 나타내는 명령형 프로그래밍 언어의 가장 작은 독립된 실행형 요소를 의미한다
- 완전한 실행단위를 구성하는 모든 것은 문장(statement)이다
- 식은 문장의 한 부분(statement >= expression)이다
val passOrFail = if(jumsu >= 60) "pass" else "fail"
val passOrFail = if(jumsu >= 60) "pass" else "fail"
여기서 부등호의 오른쪽 부분(if(jumsu >= 60) "pass" else "fail")은 pass나 fail이라는 문자를 리턴하고 passOrFail이라는 변수에 해당 값을 할당하기 때문에 표현식(expression)이고, 전체(val passOrFail = if(jumsu >= 60) "pass" else "fail")는 문장(statement)이다
2. range
범위를 선언할 수 있고 코틀린에서는 3가지의 타입이 존재한다
또한 처음값과 마지막 값을 포함한다
type | usage | range |
Char | CharRange('A', 'Z) 혹은 'A'...'Z' |
A ~ Z |
Int | IntRange(1, 45)혹은 1..45 | 1 ~ 45 |
Long | IntRange와 동일. LongRange()를 사용해 범위를 정해주면 됨 |
3. control-flow(when, if, while)
(if랑 while은 자바스크립트에도 있는 문법이라 패스)
코틀린에서는 switch문 대신 when을 사용한다
const val VIP = "vip"; // const 는 상수선언, 기본타입과 스트링만 가능
const val SILVER = "silver"
const val WHITE = "white"
const val NORMAL = "normal"
fun main () {
val membershipPoint = Random().nextInt(40000)
val membershipClass = when(membershipPoint) {
in 1000..20000 -> WHITE
in 20001..30000 -> SILVER
in 30001..40000 -> VIP
else -> NORMAL
}
println("이번 달 당신의 멤버십은 ${membershipClass} 입니다.")
}
// 혹은 아래와 같이 작성 가능
val membershipClass = when() {
membershipPoint in 1000..20000 -> WHITE
membershipPoint in 20001..30000 -> SILVER
membershipPoint in 30001..40000 -> VIP
else -> { NORMAL }
}
4. vararg, *(spread operator)
vararg : 인자가 여러 개일때는 파라미터의 맨 마지막에 사용함
* : 코틀린에서 스프레드 오퍼레이터를 뜻함(자바스크립트에서는 ...arr 이런 식으로 사용했었음)
fun totalSum(subject: String, vararg score : Int ): Int {
// 생략
}