kotlin 문법 null 클래스 상속 람다 고차함수 when

김동현·2022년 11월 23일

?. : 안전 호출 연산자

  • null일 경우 엑세스 시도를 중지하고 null을 반환함
    ( nullable variable ) ?. ( method/property )

!! : 어설션 연산자

  • nullable로 선언했지만, 이 값은 절대 null일리가 없다는 것을 알려줌
    ( nullable variable ) !!. ( method/property )

잠재적 null이므로 .length 반환 불가
Null 검사는 변수에 액세스하여 null을 허용하지 않는 유형으로 처리하기전에 변수가 null인지 확인하는 프로세스입니다.

fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = if(favoriteActor != null) {
      favoriteActor.length
    } else {
      0
    }

    println("The number of characters in your favorite actor's name is $lengthOfName.")
}

?: : Elvis 연산자

  • ?.안전 호출 연산자가 null을 반환할 때 기본값을 추가할 수 있습니다.
fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = favoriteActor?.length ?: 0

    println("The number of characters in your favorite actor's name is $lengthOfName.")
}

클래스 (class)

  • 객체를 만들어 내기 위한 '틀' 또는 '설계도'

객체 (object)

  • 클래스에 선언된 모양 그대로 생성된 실체 그 자체

인스턴스 (instance)

  • 클래스가 메모리에 할당되어 사용가능하도록 만들어진 것

IS-A

  • 클래스를 상속(Inherits)받을 때의 관계

HAS-A

  • 객체는 실제로 클래스 자체인 인스턴스가 아니더라도 다른 클래스의 인스턴스를 소유할 때의 관계

람다 표현식

  • 람다 표현식은 함수를 작성하는 약식 문법을 제공
  • 함수 유형을 다른 함수에 전달할 수 있다.
    val ( variable name ) = { }
    val greeting = { name: String -> println("안녕! 나는 ${name}야!") }

val greeting : (String) -> Unit { }
//    입력 자료형 -> 출력 자료형


고차함수
fun sum (a: Int, b: Int): Int = a+b
fun calculate(a: Int, b: Int): Int = sum(a, b)


when

,
in
is


접근제어자
public
private
protected - 상속 관계에서만 접근이 가능하다.
internal - 동일한 모듈 안에서만 접근이 가능하다.


인터페이스(추상화)

  • 집을 지을 떄는 사전에 원하는 사항을 건축가에게 알려줍니다.
    침실, 아이방, 거실, 몇 개를 만들고 싶습니다.
    간단히 말해 원하는 항목 을 지정하면 건축가가 달성할 방법 을 지정합니다.

함수 참조 연산자 ::

fun main() {
    val trickFunction = ::trick
}

fun trick() {
    println("No treats!")
}

함수 참조 연산자, 람다 --> 변수를 함수처럼 사용가능 (리턴값으로도 사용가능)

fun main() {
    val trickFunction = trick
    trick()
    trickFunction()
}

val trick = {
    println("No treats!")
}

함수를 다른 함수에 인수로 전달
null을 허용하는 함수 유형


매개변수 it으로 사용 (매개변수가 한개있고, 이름을 지정하지 않는 경우)
람다 표현식을 함수에 직접 전달
후행 람다 문법 사용
repeat() 함수 사용

profile
김김동현

0개의 댓글