Kotlin에서 If문은 식이다.
Java
에서 if문
이라고 한다. 그렇다면, Kotlin
에서는 왜 식
일까?
하나의 상황을 예시로 들어보겠다.
result
라는 변수에 condition
의 상태에 따라 값을 저장한다고 가정한다면, Java
와 Kotlin
에서는 어떻게 작성할 수 있을까?
Java
가장 먼저 Java
에서는 다음과 같이 작성할 수 있다.
String result;
if (condition) {
result = "참";
} else {
result = "거짓";
}
Java
에서는 변수를 선언하고 if
문의 결과를 변수에 할당하여 값을 설정해야 한다.
Kotlin
Java
와 다르게 Kotlin
에서는 다음과 같이 작성할 수 있다.
val result = if (condition) "참" else "거짓"
Kotlin
에서의 if
는 값을 반환하는 식
인 것이다.
이를 함수에 응용하면, max
값을 구하는 함수를 다음과 같이 작성이 가능하다.
fun max(a: Int, b: Int) = if(a>b) a else b
이러한 함수를 블록이 본문인 함수
라고 한다.
블록이 본문인 함수
위에서 블록이 본문인 함수
의 예시에 대해서 확인했다.
그렇다면, 여기서 의문점이 들 수도 있다.
왜? 반환 타입을 지정하지 않는 것일까?
그것에 대한 해답은 Kotlin
언어는 블록이 본문인 함수
의 경우 반환타입을 적지 않아도 컴파일러가 함수 본문 식을 분석하여 결과 타입을 함수 반환 타입으로 정해준다.
이러한 기능을 타입 추론
이라고 한다.
val 과 var의 차이
val
val
: 값을 뜻하는 value에서 따온 것으로, 변경 불가능한 참조이다.
val
의 경우에는 반드시 한 번만 초기화 해야한다. 또한 참조 자체가 불변이지만, 객체의 내부의 값은 변경될 수 있다.
예를들어 언어
의 목록이 들어가 있는 language
배열을 선언했을 때, add
를 이용하여 새로운 언어 kotlin
을 추가해주어도 문제가 생기지 않는다.
var
var
: 변수를 뜻하는 variable에서 따온 것으로, 변경 가능한 참조다.
var
은 그렇다고 아무거나 막 값을 넣어 바꿀 수 없다. 지정한 타입과 동일한 타입으로만 변경이 가능하다. 이는 컴파일 단계에서 변수 타입을 추론하기 때문이다.
'안드로이드 > Action Kotlin' 카테고리의 다른 글
Action Kotlin 6 - 연산자 오버로딩과 기타 관계 (0) | 2023.10.30 |
---|---|
Action Kotlin 5 - 코틀린 타입 시스템 (0) | 2023.10.27 |
Action Kotlin 4 - 람다로 프로그래밍 (0) | 2023.10.25 |
Action Kotlin 3 - 클래스, 객체, 인터페이스 (1) | 2023.10.24 |
Action Kotlin 2 - 함수의 정의와 호출 (0) | 2023.10.24 |