본문 바로가기
프로그래밍/Unity

람다

by 뽀도 2017. 1. 5.

◆ 람다 


1. 람다식


람다식 익명 메소드를 만들기 위해 사용합니다. 

람다식으로 만드는 익명 메소드는 무명 함수라는 이름으로 부릅니다.


람다식을 선언하는 형식은 다음과 같습니다.

-------------------------

매개 변수 목록 => 식

-------------------------


람다식에서는 =>를 중심으로 왼편에는 매개변수, 오른편에는 식이 옵니다.


람다식 코드 예)

---------------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace study

{

    class Program

    {

        delegate int Calculate(int a, int b);


        static void Main(string[] args)

        {

            Calculate cac = (a, b) => a + b;

            Console.WriteLine("{0} + {1} : {2}", 3, 4, cac(3, 4));


        }

    }

}---------------------------------------------------------------------------




2.문 형식의 람다식


=> 연산자의 오른편에 식 대신 중괄호 { } 로 둘러싸인 코드 블록이 위치합니다. 형식은 아래와 같습니다.


매개 변수 목록 => { 

문장1;

문장2;

문장3;

};


문형식의 람다식 예 )

---------------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace study

{

    class Program

    {

        delegate void DoPrint();


        static void Main(string[] args)

        {

            DoPrint doprint = () =>

            {

                Console.WriteLine("문형식의 람다식");

                Console.WriteLine("새 컴퓨터 좋다");

            };


            doprint();

        }

    }

}


---------------------------------------------------------------------------


3. Func와 Action으로 더 간단하게 무명함수 만들기


- 익명 메소드나 무명 함수를 만들기 위해 매번 별개의 델리게이트를 선언하는건 번거로울 수도 있다.

- Func 와 Action이있는데 Func는 결과를 반환하고, Action은 반환하지 않는다. 



Func예 

---------------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace study

{

    class Program

    {

        delegate void DoPrint();


        static void Main(string[] args)

        {

            Func<int> func1 = () => 10;

            Console.WriteLine("Func1() : {0}", func1());


            Func<int,int> func2 = (x) => x*2;

            Console.WriteLine("Func2(4) : {0}", func2(4));


            Func<double, double, double> func3 = (x, y) => x / y;

            Console.WriteLine("Func3(22/7) : {0}", func3(22,7));


        }

    }

}

---------------------------------------------------------------------------


Action 예 

---------------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace study

{

    class Program

    {

        delegate void DoPrint();


        static void Main(string[] args)

        {

            Action act1 = () => Console.WriteLine("Action()");

            act1();


            int result = 0;

            Action<int> act2 = (x) => result = x * x;


            act2(3);

            Console.WriteLine("result : {0}" + result);


            Action<double, double> act3 = (x, y) =>

             {

                 double pi = x / y;

                 Console.WriteLine("Action<T1,T2>({0},{1}) : {2}", x, y, pi);

             };


            act3(22.0, 7.0);


        }

    }

}

---------------------------------------------------------------------------


반응형

'프로그래밍 > Unity' 카테고리의 다른 글

var 암시적 형식  (0) 2017.01.05
델리게이트  (0) 2017.01.05
[c#] is/as 연산자  (0) 2016.12.26
[c#] class 객체  (1) 2016.12.26
[C#] 메소드 관련  (0) 2016.12.21

댓글