코틀린 기본기 - 제어문

Janek·2023년 2월 25일
0

코틀린 기본기

목록 보기
2/3
post-thumbnail

해당 포스팅은 인프런에서 제공하는 최태현 님의 '자바 개발자를 위한 코틀린 입문'을 수강한 후 정리한 글입니다. 유료 강의를 정리한 내용이기에 제공되는 예제나 몇몇 내용들은 제외하였고, 정리한 내용을 바탕으로 글 작성자인 저의 언어로 다시 작성한 글이기에 서술이 부족하거나 잘못된 내용이 있을 수 있습니다. 그렇기에 해당 글은 개념에 대한 참고 정도만 해주시고, 강의를 통해 학습하시기를 추천합니다.

조건문

if문

fun validationScore(score: Int) {
	if (score < 0) {
    	throw IllegalArgumentException("${score}는 0보다 작을 수 없습니다.");
    }
}

위의 코드 예제를 통해 알 수 있는 코틀린과 자바의 차이는 함수를 선언하기 위해 fun키워드를 사용하며, Exceptionthrow할 때 new 키워드를 생략한다는 것이다.

if문은 기본적으로 자바와 사용 방법이 동일하다. 그러나 자바에서 if-elseStatement이지만 코틀린에서는 Expression이라는 차이가 있다.

Expression(문)과 Statement(표현식)


Expression은 '수식'이라는 뜻으로 하나 이상의 값으로 표현될 수 있는 코드를 뜻한다. 변수와 연산을 비롯해 함수 콜, 변수 이름과 같은 식별자, 배열등의 할당 연산자까지도 포함한 식을 의미한다.

Statement는 프로그래밍에서 실행가능한 최소의 독립적인 코드 조각을 말한다. 컴파일러가 이해하고 실행할 수 있는 모든 구문은 statement이며 한 개 이상의 expression과 프로그래밍 키워드를 포함한다.

int num = 30 + 40;	// Expression & Statement

boolean isPass = if (num > 50) { "Pass"; }
// if문을 하나의 값으로 취급하지 않기 때문에 에러 발생, !Expression & Statement

위의 예제와 같이 자바에서 if-else문은 statement이다. 그러나 코틀린에서는 expression이기 때문에 아래와 같이 사용할 수 있다.

val isPass: Boolean = if (score > 50) { "Pass" } else { "Fail" }

이처럼 조건문을 expression으로 사용할 수 있기 때문에 코틀린에는 삼항 연산자가 존재하지 않는다.

또한if (0 <= score && score <= 100)과 같은 범위에 대한 조건식을 if (score in 0..100)과 같이 in을 사용하여 간단하게 표기할 수 있다.

switch와 when

코틀린에서는 자바의 switch문이 when으로 대체되었다.

when() {
	조건부 -> 어떠한 구문
    조건부 -> 어떠한 구문
    else -> 어떠한 구문
}

조건부에는 어떠한 expression이라도 들어갈 수 있으며, 여러 개의 조건을 ,로 구분하여 동시에 검사할 수 있다. 값 부분이 없을 경우 early return 처럼 동작하며, when 역시 expression으로 사용 가능하다. Enum, Sealed Class와 함께 사용할 경우 시너지가 좋다.

반복문

for/for-each

기본적으로 for문과 for-each문 모두 자바와 거의 동일하게 동작하지만 문법에 약간의 차이가 있다.

for-each

자바와 동일하게 Iterable이 구현된 타입이라면 모두 for-each문을 사용할 수 있다. : 대신 in을 사용한다는 차이가 존재한다.

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

for

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

위의 코드는 자바의 for (int i = 0; i <= 3; i++)와 동일하게 동작한다. i가 증감식이 감소되는 경우에는 for (i in 3 downTo 1)과 같이 표현할 수 있으며, 증가되는 수가 2 이상일 경우 for (i in 1..5 step 2)와 같이 표현할 수 있다. 여기서 사용되는 downTostep 모두 함수이며, 중위 호출 함수라 한다.

코틀린은 for문 사용 시 1..3과 같은 범위 연산자와 downTo, step과 같은 함수를 이용하여 등차수열을 만들어낸다. 1..3, 3 downTo 1을 통해 시작값과 끝값을 표현하고 step을 통해 공차를 표현해주는 것이다.

이 외의 반복문인 while, do while문은 자바와 완전히 동일하다.

profile
만들고 나누며, 세상을 이롭게 하고 싶습니다.

0개의 댓글