하루에 0.01%라도 성장하자

Develop/Android

Kotlin ) 코틀린 기초 Part#7 - 람다식, SAM

뚠님 2019. 6. 13. 12:00
반응형

Kotlin

람다식

 

람다식을 이용한 함수 표현

fun add(x: Int, y:Int):Int { // Int형 return 값. 
    return x+y
}

fun add(x:Int, y:Int) = x + y // 반환 자료형을 생략하고 블록과 return 생략

var add = {x :Int, y: Int -> x + y}
println(add(2 5)) // 7

 

SAM ( Single Abstract Method )

 

자바로 작성된 메서드가 하나인 인터페이스를 구현할 때는 대신 함수를 작성할 수 있는데, 이것을 SAM이라고 한다.

 

button.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v : View?) {
        //클릭 시 처리
    }
}) 일반적인 클릭 리스너

// 이렇게 구현해야 하는 메소드가 하나일 경우 사용한다.

button.setOnClickListener({ v:View? -> 
    // 클릭 시 처리
})

button.setOnClickListener() { v:View? ->
    // 클릭시 처리
}

// 람다가 어떤 메소드의 유일한 인수인 경우 메서드의 괄호를 생략할 수 있다.
button.setOnClickListener { v : View? ->
    // 클릭시 처리
}

// 컴파일러가 자료형을 추론하면 아래와 같이 사용할 수 있다.
button.setOnClickListener { v ->
    // 클릭시 처리
}

// 만약 인수를 사용하지 않으면 아래와 같이 _ 기호로 대치할 수 있다.
// 잘못 사용하는 것을 방지함.
button.setOnClickListener { _ ->
    // 클릭시 처리
}

// 람다식에서 인수가 하나인 경우에는 아예 생략하고 인수를 it으로 접근할 수 있다.
button.setOnClickListener {
    it.visibility = View.GONE
}

 

7개의 코드는 모두 같은 결과를 갖는다.

반응형