개발/Kotlin

코틀린 기초

귀찮은게 많은 개발자 2021. 12. 22. 15:19
728x90
  • 변수
    • val - 변경 불가능한 (immutable) 참조를 저장하는 변수
    • var - 변경 가능한 (mutable) 참조

 

  • 스마트 캐스트 (Smart cast)
    • 컴파일러가 캐스팅을 해준다.
    • is로 검사를 하고 나면 캐스팅하지 않아도 그 변수가 원하는 타입으로 선언된 것처럼 사용한다.
    • 프로퍼티에 대한 스마트 캐스트를 사용한다면 그 프로퍼티는 반드시 val 이어야 한다.
    • 커스텀 접근자를 사용한 것이어도 안 된다.

 

  • 명시적 캐스팅
    • as 키워드를 사용한다.
val n = e as Num

 

  • (1 + 2) + 4
    • Expr 인터페이스를 이용한 계산식
>>> println (eval(Sum(Sum(Num(1), Num(2)), Num (4))))
// 자바식 if 연쇄
fun eval(e: Expr): Int {
	if(e is Num) {
		val n = e as Num
		return n.value
	}
	if(e is Sum) {
		return eval(e.right) + eval(e.left)
	}
	throw IllegalArgumentException("Unknown expression")
}
// 코틀린식 when 사용
fun eval(e: Expr): Int =
	when (e) {
		is Num ->
			e.value
		is Sum ->
			eval(e.right) + eval(e.left)
		else ->
			throw IllegalArgumentException("Unknown expression")
	}

 

  • for
    • for <아이템> is <원소들> 형태만 존재
// 1부터 100까지
for (i in 1..100) {
	...
}

// 역순으로 2씩
for (i in 100 downTo 1 step 2) {
	...
}

 

  • in, !in
    • in 연산자를 사용해 어떤 값이 범위에 속하는지 검사할 수 있다.
    • !in 연산자를 사용해 범위에 속하지 않는지 검사할 수 있다.
// when에서 in 사용
fun recognize(c: Char) = when (c) {
	in '0'..'9' -> "It's a digit!"
	in 'a'..'z', in 'A'..'Z' -> "It's a letter!"
	else -> "I don't know..."
}

 

  • try, catch
    • try 키워드는 if나 when과 마찬가지로 이다.
// try 식으로 사용, catch에서 값 반환
fun readNumber(reader: BufferedReader) {
	val number = try {
		Integer.parseInt(reader.readLine())
	} catch (e: NumberFormatException) {
		null
	}
	println(number)
}
728x90

'개발 > Kotlin' 카테고리의 다른 글

람다로 프로그래밍  (0) 2021.12.28
클래스, 객체, 인터페이스 (2/2)  (0) 2021.12.27
클래스, 객체, 인터페이스 (1/2)  (0) 2021.12.24
함수 정의와 호출 (2/2)  (0) 2021.12.23
함수 정의와 호출 (1/2)  (0) 2021.12.23