[Kotlin/코틀린] 함수형 프로그래밍과 람다

SoyoungLee·2021년 3월 29일
0
post-thumbnail

💌 함수형 프로그래밍과 람다

📌 람다 표현식

💜 람다 표현식

fun 함수이름(매개변수){ 함수내용 }

{매개변수 -> 함수내용}
  • 람다식 값을 사용한 호출
fun main(args: Array<String>){

   val result = callByValue(Lamda())
    println(result)
}

fun callByValue(b: Boolean): Boolean{
    println("callByValue function")
    return b
}

val Lamda: () -> Boolean ={
    println("lamda function")
    true
}

lamda function
callByValue function
true

  • 람다식 이름을 사용한 호출
fun main(args: Array<String>){

   val result = callByValue(Lamda)  // 람다식 이름으로 호출
    println(result)
}

fun callByValue(b: () -> Boolean): Boolean{
    println("callByValue function")
    return b()
}

val Lamda: () -> Boolean ={
    println("lamda function")
    true
}

🖥
callByValue function
lamda function
true

💜 함수 타입

- typealias 이용

typealias MyType = (Int) -> Boolean
val myFun: MyType = { it > 10 }

- 매개변수 생략

moreParam { _, b -> "Hello World! $b" }	// 첫번째 문자열은 사용하지 않고 생략

💜 it을 이용한 매개변수 이용

  • 매개변수가 하나인 람다함수에서만 사용 가능
val lamdaFun2: (Int) -> Int = {x -> x+10 }
val lamdaFun2: (Int) -> Int = { it + 10 }

💜 일반 매개변수와 람다식 매개변수 같이 사용

withArgs("args1", "args2" , { a,b -> "Hello" $a $b" } )
// 소괄호 바깥으로 분리 가능
withArgs("args1", "args2") { a,b -> "Hello" $a $b" }

// 람다식 함수를 마지막 매개변수로 가짐
fun withArgs (a: String, b: String, out: (String, String) -> String) {
	println(out(a,b))
}
  • 두개의 람다식을 가졌을 때
    ({첫번째}, {두번째})
    ({첫번째}) {두번째}

({첫번째}, {두번째}) {세번째}

💜 멤버 참조 이용

val lamdaNumber1: (User) -> Int = { user: User -> user.age }
val lamdaNumber1: (User) -> Int = { it.age }
val lamdaNumber1: (User) -> Int = User::age
profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글