코틀린 기초
함수
fun bar(a: Int, b: Int): Int {
// 함수 본문
return if (a == b) a else b
}
문(statement)와 식 구분(expression)
- 코틀린에서 if는 식이고 문이 아니다. 식은 값을 만들어 낸다.
- 자바는 모든 제어 구조가 문이지만 코틀린은 루프를 제외한 대부분이 식이다.
블록이 본문인 함수:본문이 중괄호로 둘러싸인 함수
식이 본문인 함수: 등호와 식으로 이뤄진 함수
타입추론
- 컴파일러가 구성 요소의 타입을 정해주는 기능
- 식이 본문인 함수의 반환 타입만 생략 가능
변수
- 모든 변수를
val
키워드를 사용해 불변 변수로 선언하고 필요할때만var
로 선언
문자열 템플릿
fun bar(): String {
val foo = "world"
println("Hello, $name")
}
- $를 문자열에 넣고 싶으면
\
를 사용해 이스케이프 시켜야한다.
fun main() {
val name = "test"
println("${name}님 반가워요")
}
- 한글을 붙여 쓸때는 { } 를 사용한다.
프로퍼티
코틀린은 프로퍼티를 언어 기본 기능으로 제공
val: 읽기전용, var 변경가능
backing field :대부분 프로퍼티에는 그 프로퍼티의 저장하기 위한 필드가 있음
ENUM
fun main() {
println(PaymentType.CARD.payRate())
// 카드결제 0.1
}
enum class PaymentType (
val payName: String, val rate: Double
) {
CARD("카드결제", 0.1),
CASH("현금결제", 0.0),
NAVERPAY("네이버페이", 0.0);
fun payRate() = payName + " " + rate
}
- 코틀린 Enum 상수 선언 마지막에는 ; 를 붙인다.
when
- when에 아무 인자도 없으려면 각 분기 조건이 boolean 결과를 계산해야한다.
- 분기조건에 여러 다른 객체 사용하기
fun discount(payType1: PaymentType, payType2: PaymentType) = when (setOf(payType1, payType2)) { setOf(PaymentType.CARD, PaymentType.CASH) -> "일반결제" setOf(PaymentType.CARD, PaymentType.NAVERPAY) -> "포인트적립결제" else -> throw Exception("지원하지 않는 결제방식") }
- if 중첩 대신 when 사용하기
타입캐스트
- 코틀린에서는
is
를 사용해 변수 타입검사
스마트 캐스팅
is
로 검사하고 나면 컴파일러가 캐스팅 수행 원하는 타입으로 명시적 캐스팅 하는 것은AS
이터레이션
for (i in 1.1000) {
}
for (i in 1000 downTo 1 step 100) {
}
// 역방향 100씩 감소
- withIndex를 쓰면 인덱스 정보를 출력
- "MAP에 for문으로 이터레이션 구조분해 사용가능.
범위에 값이 있는지 체크
fun main() {
var a1 = '0'
println(a1 in '0'..'9')
}
예외처리
- 체크예외처리를 강제하지 않으며 , try자체도 식으로 처리됨
'읽은책' 카테고리의 다른 글
코틀린 인 액션 스터디 - 3 (0) | 2022.12.03 |
---|---|
구글 엔지니어는 이렇게 일한다 (0) | 2022.11.29 |
코틀린인액션 스터디- 1 (0) | 2022.11.26 |
프로그래머의 뇌 (0) | 2022.04.04 |
인스파이어드 (0) | 2022.02.23 |