반응형
람다식
람다식을 이용한 함수 표현
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개의 코드는 모두 같은 결과를 갖는다.
반응형
'Develop > Android' 카테고리의 다른 글
kotlin-android-extensions 와 Anko 라이브러리 (0) | 2019.06.17 |
---|---|
Kotlin ) 코틀린 기초 Part#8 - 확장함수, 형변환, 그외 함수 (0) | 2019.06.14 |
Kotlin ) 코틀린 기초 Part#6 - 컬렉션 (0) | 2019.06.13 |
Kotlin ) 코틀린 기초 Part#5 - null? null! (0) | 2019.06.12 |
Kotlin ) 코틀린 기초 Part#4 - 인터페이스 ( interface ) (0) | 2019.06.12 |