Skip to content

Latest commit

 

History

History
82 lines (63 loc) · 3.8 KB

File metadata and controls

82 lines (63 loc) · 3.8 KB

널안정성이란?

널이란 객체가 선언되었지만 초기화되지 않은 상태를 의미. 객체는 데이터가 저장된 주소를 참조하므로 흔히 참조 변수라고 한다.
그런데 널은 객체가 주소를 가지지 못한 상태를 나타낸다.
변수가 선언되어도 이용할 수 없는 상태이다.
널인 상태의 객체를 이용하면 널 포인트 예외가 발생한다.
이는 널인 상태의 객체를 이용할 수 없다는 오류이다.

널 안정성이란 널 포인트 예외가 발생하지 않도록 코드를 작성하는 것을 말하는데,
널 포인트 예외는 오류이므로 당연히 발생하지 않게 작성해야 하지만,
중요한 건 이런 노력을 누가 하는가다.

스크린샷 2023-02-07 오후 5 50 47

이렇게 짧게 널 안정성을 검토 할 수 있다.

타입 선언 뒤에 ? 연산자 추가
널 안정성 호출 - ?.연산자

널 불허로 선언한 변수는 NULL을 대입할 경우 얼마든지 널 포인트 예외가 발생할 수 있다.
널 허용으로 선언한 변수의 멤버에 접근할 때는 반드시 ?. 연산자를 이용해야한다.
?. 연산자는 변수가 NULL이 아니면 멤버에 접근하지만 NULL 이면 멤버에 접근하지 않고 NULL을 반환한다.

엘비스 - ?: 연산자

엘비스 연산자란 ?: 를 말하는데 변수가 널이면 널을 반환한다. 어떤 경우에는 변수가 널일 때 대입해야 하는 값이나 실행해야 하는 구문이 있을 수 있을 때 사용한다.

예외 발생 - !! 연산자

!!는 객체가 널일 때 예외를 일으키는 연산자이다. 널 포인트 예외를 발생시켜야 할 때도 있다. ● 람다 함수는 익명함수 ● 매개변수가 1개인 람다 함수는 함수에서 매개변수를 it 키워드로 이용한다.
● 람다 함수에는 명시적으로 RETURN 문을 사용할 수 없으며 함수의 마지막 실행문의 결과값을 반환한다.
● 함수를 매개변수로 받거나 반환하는 함수를 고차함수라고 한다.
● 널 안정성이란 널 포인트 예외가 발생하지 않게 프로그래밍해야 한다는 의미이며, 코틀린에서 이를 지원하는 ‘?.’ ‘?:’ ‘!!’ 등의 연산자를 제공한다.

람다함수

{매개변수 선언 -> 함수 내용}(변수)

매개변수 한개 일 때
Val some : (Int) -> Unit = {println(it)}
함수 타입 선언

함수를 선언할 때 나타내는 매개변수와 반환 타입을 의미한다.

Fun some( a : Int, b : Int) : Int 

(Int, Int) -> Int

로 표현할 수 있다.

Val some: (Int, Int) -> Int = {  no1: Int, no2: Int -> no1 + no2}
타입 별칭 - typealias

함수 타입을 typealias를 이용해 선언할 수 있다.
타입의 별칭을 선언하는 키워드로, 함수 타입뿐만 아니라 데이터 타입을 선언할 때도 사용한다.
예를 들어 Int를 myInt로 바꿀 수 있다.

Typealias myfuntype = (Int, Int) -> Boolean 

Fun main () {
  val somefun : myfuntype = {n1: Int, n2: Int -> n1 > n}
}  // 여기서 n1, n2의 타입 선언을 생략할 수 있다. 

처럼 바꿀 수 있다. Val some = {n1: Int, n2: Int -> n1 > n2} 처럼 Some 함수의 타입을 생략할 수 있다.

고차함수

고차 함수란 함수를 매개변수로 전달받거나 반환하는 함수를 의미한다. Hotfun()은 고차함수이다.

스크린샷 2023-02-07 오후 6 14 13