변수
val a : String = "a" // 초기화 후 변경 불가능
var b : String = "b" // 초기화 후 변경 가능
val c = 1
val d : Int
d = 2
함수
- 반환형이 없는 경우 Unit 타입이 반환되고 생략 가능하다.
fun sum(a: Int, b: Int) : Int {
return a + b
}
// return 타입은 생략 가능
fun sum(a: Int, b: Int) : Int = a + b
fun greeting(msg: String = "hello") {
println(msg);
}
fun main() {
greeting() // hello
greeting("world") // world
}
fun log(level: String = "INFO", message: String) {
println("[$level]$message")
}
fun main() {
log(message = "인포 로그") // [INFO]인포 로그
log(level = "DEBUG", "디버그 로그") // [DEBUG]디버그 로그
log("WARN", "워닝 로그") // [WARN]워닝 로그
log(level = "ERROR", message = "에러 로그") // [ERROR]에러 로그
}
흐름 제어
- if-else 표현식 (그 자체로 값을 만들어 낼 수 있음)
- 삼항 연산자가 없다 ⇒ if-else 표현식을 사용한다
val name = "soobin"
val str = if (name == "soobin") {
"true"
} else {
"false"
}
println(str) // true
// 삼항 연산자 대신 if-else를 쓴다
val str2 = if (name == "soobin") "true" else "false"
println(str2) // true
val day = 2
val result = when (day) {
1 -> "월요일"
2 -> "화요일"
3 -> "수요일"
4 -> "목요일"
5 -> "금요일"
6 -> "토요일"
7 -> "일요일"
else -> "에러"
}
println(result) // 화요일
for (i in 0..3) // 0,1,2,3
for (i in 0 until 3) // 0,1,2
for (i in 0..10 step 2) // 0,2,4,6,10
for (i in 3 down to 1) // 3,2,1