코틀린 문법 (3)

k_hyun·2023년 1월 26일
0

람다함수

익명 함수 정의 기법

val sum = {no1: Int, no2: Int -> no1 + no2}
// 함수 선언

sum(10, 20)
// 함수 호출

{not1: Int, no2: Int -> no1 + no2} (10, 20)
// 선언 및 호출

매개변수가 1개인 람다 함수

fun main() {
	val some: (Int) -> Unit = {println(it)}
}

매개변수 타입 생략

val someFun: (Int, Int) -> Boolean
= {no1, no2 -> no1 > no2}

매개변수의 타입이 유추 가능하면 타입 선언을 생략할 수 있다

고차함수

함수를 매개변수로 전달받거나 반환하는 함수를 의미한다

널 안전성

널 포인트 예외가 발생하지 않도록 코드를 작성하는 것

널 허용

var data1: String = "a"
data1 = null	
// 오류

var data2: String? = "a"
data2 = null
// 성공

타입뒤에 ? 연산자를 붙임으로써 null을 대입할 수 있다

널 안전성 호출

var data: String? = "a"
var length = data.length
// 오류

var data: String? = "a"
var length = data?.length
// 성공

널 허용으로 선언한 변수의 멤버에 접근 할 때는 반드시 ?. 연산자를 사용해야 한다.
?. 연산자는 변수가 null이 아니면 멤버에 접근하고, null이면 멤버에 접근하지 않고 null을 반환한다

엘비스 연산자

var data: String? = "a"
println(data?.length ?: -1)

data가 null이 아니면 ?:앞의 값을, null인 경우 -1을 출력한다

예외 발생 연산자

!!는 객체가 널일 때 예외를 일으키는 연산자이다

0개의 댓글