"Lambda expressions"의 두 판 사이의 차이

wwiki
이동: 둘러보기, 검색
(새 문서: LISP에 들어 있다. λxyㆍplus(x, y) 처럼 함수를 사용하는 변수를 명시하는 표기방법이다. λ(람다)는 그리스 문자로 물리에서는 소립자의 하나...)
 
39번째 줄: 39번째 줄:
 
Func<int, int> square = (x) => x*x;
 
Func<int, int> square = (x) => x*x;
 
Cosole.Write(square(10)); // 100출력
 
Cosole.Write(square(10)); // 100출력
</syntaxhighlight>
+
</syntaxhighlight>'Expression lambda'는 '[[Expression trees|expression tree]]' 타입으로 변환할 수 있다. <syntaxhighlight lang="csharp">
 +
System.Linq.Expressions.Expression<Func<int, int>> e = x => x * x;
 +
Console.WriteLine(e);
 +
// Output:
 +
// x => (x * x)
 +
</syntaxhighlight><br />
 +
== Expression lambdas(식 람다) ==
  
== expression lambdas(식 람다) ==
+
== Statement lambdas(문 람다) ==
 
 
== statement lambdas(문 람다) ==
 

2021년 2월 18일 (목) 08:00 판

LISP에 들어 있다. λxyㆍplus(x, y) 처럼 함수를 사용하는 변수를 명시하는 표기방법이다. λ(람다)는 그리스 문자로 물리에서는 소립자의 하나이고, 부피의 단위로 100만분의 1을 나타내기도 한다.

c#에서 람다표현식을 사용해서 익명함수를 만든다.

=> : 람다 선언 연산자이다.

(input-parameter, ...) => expression
(input-parameters) => { <sequence-of-statements> }
class Program
{
    delegate int Calc(int a, int b);
  
    public static void Main(string [] args)
    {
        Calc c = (a, b) => a +b;
        int sum = c(1,1);
    }
}

람다 식에서 값을 반환하지 않는 경우 Action 대리자 형식 중 하나로 변환할 수 있다.

Action hello = () => Console.WriteLine("Hello");

hell();

매개변수가 2개이고 값을 반환하지 않는 람다식은 Action<T1, T2>대리자로 변환할 수 있다.

Action<int, int> showSum = (x, y) => 
{
    int sum = x + y;
    Console.Write(sum);
}
showSum(1, 2);

값을 반환하는 경우 Func대리자 형식으로 변환할 수 있다. 매개변수가 하나이고 값을 반환하는 람다식은 Func<T, TResult> 대리자로 변환할 수 있다.

Func<int> func = () => 10; // 10을 반환
int ten = func();

Func<int, int> square = (x) => x*x;
Cosole.Write(square(10)); // 100출력

'Expression lambda'는 'expression tree' 타입으로 변환할 수 있다.

System.Linq.Expressions.Expression<Func<int, int>> e = x => x * x;
Console.WriteLine(e);
// Output:
// x => (x * x)


Expression lambdas(식 람다)

Statement lambdas(문 람다)