Kotlin in Action 1. 함수와 변수
1. 함수
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
- 함수 선언은 fun 키워드로 시작한다.
- fun 다음에는 함수 이름이 온다.
- 이름 뒤에는 괄호를 열어 받을 파라미터 목록을 작성한다.
- 함수의 반환 타입은 파라미터 목록의 괄호 끝에 콜론을 사용해 붙인다.
추가 정보
- Kotlin의 if문은 문장이 아닌 값을 만들어내는 식이다.
- 예제의 if문은 자바의 삼항연산자와 비슷한 기능을 한다.
1-1. 식이 본문인 함수
fun max(a: Int, b: Int): Int = if (a > b) a else b
- 처음 예제처럼 본문이 중괄호로 둘러싸인 함수를 블록이 본문인 함수라 하고, 등호와 식으로 이루어진 함수는 식이 본문인 함수라 부른다.
- kotlin에서는 if, when, try등 다양한 곳에서 식이 본문인 함수를 사용한다.
fun max(a: Int, b: Int) = if (a > b) a else b
- 반환 타입까지 생략하여 함수를 더 간결하게 만들 수 있다.
- 식이 본문인 함수의 경우 컴파일러가 함수 본문의 식을 분석해 식의 결과 타입을 함수 반환 타입으로 인식한다.
→ 이를 타입 추론이라 부른다. - 식이 본문인 함수의 반환타입만 생략가능하다.
추가 정보
- return이 여러군데에서 진행되는 경우 타입을 명시하는걸 권장한다.
→ 함수의 의도, 내용 파악 용이
2. 변수
val a: Int = 0
val a = 0
// 동일함
- kotlin의 변수도 마찬가지로 타입 추론 기능을 사용 할 수 있다.
- 변수 초기화를 하지 않고 변수를 선언하기 위해서는 변수 타입을 반드시 명시해야한다.
→ 초기화 식이 없으면 컴파일러가 분석할 정보가 없음
2-1. 재 참조 가능한 변수, 재 참조가 불가능한 변수
kotlin에서는 val, var 키워드를 통해 변수를 선언한다.
- val - 재 참조가 불가능한 변수
- var - 재 참조가 가능한 변수
추가 정보
- 기본적으로 val 키워드를 사용해 불변 변수를 선언하고, 필요할 경우에만 var키워드를 사용하는게 좋다
- 불변 객체, 불변 참조를 부수효과가 없는 함수와 조합하여 사용하면 kotlin이 지향하는 함수형 프로그래밍에 좀더 가깝게 코드를 작성할 수 있다.
→ 함수형 프로그래밍에 대해서는 뒤에서 자세히 설명한다. - val 키워드는 재 참조가 불가능한것이지 완전한 불변이 아니다.
ex) val 로 선언된 리스트 내부의 값 변경 가능 - var 키워드를 사용하면 값을 변경 할 수 있지만 변수의 타입은 고정되어 변경되지 않는다.
→ 다른 타입의 값을 넣고싶다면 변환 함수를 쓰거나, 강제 형변환을 해야한다. - val 키워드를 선언할 때 정확히 한번만 초기화되어야 하지만, 컴파일러가 이를 확인한다면 경우에 따라 다른 값으로 초기화 되도록 만들 수 있다.
val message: String
if (isSuccess) {
message = "success"
} else {
message = "failed"
}
3. 문자열 템플릿
val name = "bob"
println("Hello, $name") // Hello, bob 출력
val isSuccess = false
println("result is ${if(isSuccess) "성공!" else "실패"}") // result is 실패 출력
- kotlin에서는 문자열 사이에 변수나 식을 간단하게 대입 할 수 있는 문자열 템플릿 이라는 기능을 지원한다.
→ 자바의 문자열 접합 연산 ‘ + ‘ 과 동일한 기능이다.
마무리
글 읽어주셔서 감사합니다.
reference
https://m.yes24.com/Goods/Detail/55148593
'Kotlin' 카테고리의 다른 글
[Kotlin] const val과 val의 차이점에 대해 알아보기! (0) | 2024.03.19 |
---|