kotlin 문법 정리 (변수 / 함수 / 흐름제어)

2023. 2. 1. 18:10JAVA Back-End/kotlin

변수 

val a: Int = 10

// type없어도 compile 오류  x (타입추론) - 생략가능
val b = "hellio"


// 지연할당 지원. 지연할당 시에는 타입을 선언해줘야 합니다.
val c: Int
c = 10


// val(value) - read only. 재할당 시 컴파일 오류

// var (variable) - 재할당 가능

 

함수

// 기본적 함수 선언
fun sum(a: Int, b: Int): Int {
	return a+b;
}

// 표현식 스타일
fun sum2(a: Int, b: Int): Int =  a + b;

// 표현식 & 반환타입 생략
fun sum3(a: Int, b: Int) = a + b;

// 몸통이 있는 함수는 반환 타입을 제거하면 컴파일 오류
fun sum4(a: Int, b: Int) : Int {
	return a + b;
}

// 반환타입이 없는 함수는 Unit을 반환한다. - void 
fun printSum(a: Int, b:Int){
	println("$a + $b = ${a + b}");
}

// 디폴트 파라미터를 줄 수 있음
fun greeting(message: String = "안녕"){
 	println(message) // 안녕
}

greeting() // 안녕
greeting("hi") // hi

// named argument
fun log(level: String="INFO" , messgae: String){
 prinln(" [$level] $message");
}

log(message = "인포 로그")
log(level = "DEBUG",message = "디버그 로그")
log(message = "인포 로그")
log(level = "ERROR",message = "에러 로그")

 

흐름제어 - 조건절 (when, if ..else)

// if ..else 사용
val job = "developer"
if( job == 'developer' ){
	println("개발자")
} else {
	println("개발자 아님")
}


// 코틀린은 삼항연산자 없음. if..else가 표현식이라 불필요
val a=1
val b=2
val c= if(b > a) b else a

val age:Int = 10
val str = if( age > 20 ) { "adult"} else { "children" }


// when식 사용
val day = 2;

val res = when(day) {
 1 -> "월"
 2 -> "화"
 3 -> "수"
 4 -> "목" 
 5 -> "금"
 else -> "주말"
}

println(res)


enum class Color {
	RED, GREEN, BLUE
}

fun getColor() = Color.RED;

fun getNumber() = 2;


when(getColor()){
	Color.RED -> print("red")
    Color.GREEN -> print("green")
    else -> println("blue")
}

흐름제어 - 반복문

// 범위 연산자 ..을 이용해 for loop 돌리기 - for in

for( i in 0 .. 3){
	println(i)
}

// until을 사용해 반복함.

for (i in 0 until 3) {
	println(i)
}

// step에 들어온 값 만큼 증가시킴
for( i in 0 .. 6 step 2){
	println(i)
}

// downTo를 사용해 반복하면서 값을 감소시킬 수 있음
for( i in 3 downTo 1){
	println(i)
}

/*
3
2
1
*/



val numbers = arrayOf(1,2,3) // [1,2,3]

for( i in numbers) {
	println(i)
}

 

'JAVA Back-End > kotlin' 카테고리의 다른 글

[kotlin] null-safety / 예외처리  (0) 2023.02.02