외로운 Nova의 작업실

안드로이드 앱 프로그래밍 - 4(코틀린의 유용한 기법) 본문

Programming/Kotlin - Android

안드로이드 앱 프로그래밍 - 4(코틀린의 유용한 기법)

Nova_ 2023. 1. 9. 20:57

- 람다 함수

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

//람다함수 호출문
sum(10, 20)

//람다함수 선언과 호출
val sum = {no1: Int, no2: Int -> no1 + no2}(10, 20)

//매개변수 없는 람다함수
{println("function call")}

//매개변수가 1개인 람다함수에 unit, i 키워드 사용
val some: (Int) -> Unit = {println(it)}

//람다 함수의 반환
val som = {no1: Int, no2: Int) ->
    println("function")
    no1 * no2    //얘가 반환됨
}

//함수 타입 선언 및 람다함수 선언
fun some: (Int, Int) -> Int = {no1: Int, no2: Int-> no1 + no2}

//typealias
typearias MyFunType = (Int, Int) -> Boolean
val someFun : MyFunType = {no1: Int, no2: Int -> no1 > no2}

//매개변수 타입 생략
typearias MyFunType = (Int, Int) -> Boolean
val someFun : MyFunType = {no1, no2 -> no1 > no2}

 

- 고차 함수

고차 함수란 함수(식)을 매개변수로 전달받거나 반환하는 함수를 의미합니다. 아래는 예제입니다.

fun hotFun(arg: (Int) -> Boolean): () -> String{
    var result = if(arg(10)){
    "valid"
    }else{
    "invalid"
    }
    return {"hofFun result : $result"}
}

fun main(){
    var result = hofFun({no -> no > 0})
    println(result)
}

 

- 널 안전성

널이란 객체가 선언되었지만 초기화되지 않은 상태를 의미합니다.

//널 안전성이 없는 코드
var data:String? = null

data.length //오류

//널 안전성 호출 ?. 연산자
var data:String? = null

data?.length //오류가 나지않고 null이 반환됨

//엘비스 ?:연산자
var data:String? = null

data?.length ?: -1 //data가 null이면 -1이 반환됨

//예외발생 !! 연산자
var data: String? = null

data!!.length //오류발생

 

Comments