Skip to content

15. lambdas

VintageAppMaker edited this page Dec 9, 2018 · 4 revisions

lambdas

  • 함수형 프로그래밍의 필수요소 람다식
  • 식별자 없이 실행 가능한 함수 표현식. 가독성을 위해 코드를 줄이는 것.
  • 요즘 언어의 유행. 특히 자바에서는 필요한 요소였음(공포의 anonymous object). java8부터 지원.
  • 함수형 프로그래밍에서는 자주사용됨.
  • 일반적인 형식은..
{ 변수정의 -> 함수구현 }
  • 함수형 변수 선언
var 이름 = { 변수정의 -> 함수구현 }
  • 함수형 변수 선언. C/C++ 함수포인터와 유사함.
이름 : (변수정의)->리턴형
  1. 소스코드

     fun main (args : Array <String>){
         var pfunc = {a: Int, b: Int -> a + b}
    
         println( pfunc(10, 30 ) )
    
         // 고차함수에 람다식을 넘기기
         fn1( pfunc )
         fn2 { n, n2 -> n + n2}
    
         // 고차함수에 람다식과 값을 같이 넘기기
         fn3(
             { n, n2 -> n +n2 },
             100, 210
         )
    
         // 함수의 주소값을 직접대입시키는 방법
         fn4(::Add)
    
         // 함수원형의 포인터를 대입시키는 편법
         var funParameter = {a : Int -> Add(a)}
         fn4( funParameter )
    
         // 위의 코딩을 점점 더 단순화
         fn4( { a : Int -> Add(a)} )
         fn4 { a : Int -> Add(a)}
         fn4 { a -> Add(a) }
     }
     
     fun fn1(func : (Int, Int) -> Int ){
         func(10, 10).let { 결과값 -> println("결과값은 $결과값 입니다") }
     }
     fun fn2(func : (Int, Int) -> Int ){
         println ( func(10, 10) )
     }
     fun fn3(func : (Int, Int) -> Int, a : Int, b : Int ){
         println ( func(a, b) )
     }
     fun fn4(func : (Int) -> Int ){
         println ( func(1) )
     }
    
     fun Add(i : Int) : Int {return i+100}
    
  2. 디버깅 & 설명

  3. 왜 사용하는가?

    
    

  4. Android Studio에 적용하기