변수

val a : String = "a" // 초기화 후 변경 불가능
var b : String = "b" // 초기화 후 변경 가능

val c = 1
val d : Int
d = 2

함수

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]에러 로그
}

흐름 제어

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