본문 바로가기
읽은책

코틀린 인 액션 스터디 - 2

by e-pd 2022. 11. 26.

코틀린 기초

함수

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