코드스피츠90 - 코틀린 언어편 2회 정리

김민우·2022년 9월 8일
0

kotlin

목록 보기
2/6
post-thumbnail

본 글은 코드스피츠90 - 코틀린 언어편 2회차를 보고 필기한 글입니다.


KClass - 코틀린 클래스 정의

클래스::class
인스턴스::class

KClass.members - 속성, 메소드 일체

  • 불변 컬렉션: List,set,Map의 부모는 Collection
  • 가변으로 바꾸고 싶다면 MutableList, MutableSet, MutableMap으로 써야 한다.

KCallable - 모든 호출가능 요소

Kproperty - 속성

KFunction - 함수, 메서드

fun <T:Any> stringify(target:T):String {
    target::class.members.filter{ it is KProperty<*> }.forEach { it ->
        val prop = it as KProperty<*>
    }
    return ""
}
fun <T:Any> stringify(target:T):String {
    target::class.members.filterIsInstance<KProperty<*>>().forEach {it ->


    }
    return ""
}

내부적으로 toString() 자동으로 호출 방법
"$변수명"
"${식}"
  • Kproperty.name - 속성명
  • Kproperty.getter : KCallable
  • KCallable.call(context, ....param):Any?

Smart Casting

변수가 아닌 상수에만 적용

 .joinTo(builder, ",", "{", "}"){
            val value = it.getter.call(target)
            "${jsonString(it.name)}:${when(value){
                null -> null
                is String -> jsonString(value)
                is Boolean, is Number-> "$value"
                is List<*>-> jsonList(value)
                else-> jsonObject(value)
  • 위 쪽에서 타입을 확정했다면, 아래쪽에서는 null이 아님 (if 조건과 비슷)

KFunction

::함수, 인스턴스::메소드

Named Argument

return target
        .joinTo(
            builder,
            ",","[","]",
            transform = ::stringify
        ).toString()
        
Iterator<T>.joinTo(
	builder,
    sep, begin, end,
    limit, truncate,
    transform
   ):String

확장함수

# 사용법
fun 형.함수명(인자):반환형{
	...
}

fun 함수명(형, 인자).반환형{
    ...
}

함수에서 형을 바깥으로 뺀 것이다.

Null chain & Elvis

it.findAnnotation<Name>()?.name ?: it.name)

?. - null chain

  • 앞이 null이면 호출되지 않도록 하는 것

A ?: B - elvis

  • A가 null이면 B

느낀점

노베 상태에서 코틀린 들으려니 어렵다. 기본을 잡고 공부해야 할 것 같다.

profile
Backend Developer

0개의 댓글