람다식(Lambda __EXPRESSION__) - 개요, 람다식
예제
람다식은 알론조 처치(Alonzo Church)라는 수학자가 발표한
람다 계산법에서 사용하는 식이며 이를 그의 제자 존 매카시가 프로그래밍 언어에 도입했는데
LISP이라는 언어로 발전 했습니다. C/C++/JAVA에서는 현재 지원하고 있지
않음(JAVA7에서 지원하려 했으나 취소됨, JAVA8에서
지원예정)
람다식은 익명메소드(Anonymous Method)를 만들기 위해
사용하며, 다만 람다식으로 만든 익명 메소드는
무명함수(Anonymous Function)이라고 부른다.
MS는 델리게이트를 이용한 익명 메소드를 C#2.0에서 도입했는데 람다식은 C#3.0이후에 도입되었다. 아마도 람다식을 사용하는 것이 익명
메소드를 만들 때 용이할 것 이다. 또한 람다 식은 LINQ
쿼리 식을 작성하는 데 특히 유용하다.
[형식]
매개변수목록 => 식
‘=>’연산자는 입력 연산자로서 매개변수를 전달하는 의미, =>를
중심으로 왼쪽에 매개변수가 오른쪽에 식이 위치하고 다른 쪽에 식이나 문 블록을 삽입합니다. 예를 들어
람다 식 x => x * x는 이름이 x인 매개
변수를 지정하고 x 제곱 값을 반환한다.
람다식 예문을 보기 전에 델리게이트를 이용하여 익명 메소드를
구현하면…
delegate int Calc(int a, int b);
……
……
//두개의 매개변수
a,b를 입력받아 그 합을 리턴하는 익명 메소드를 델리게이트로 만듬
static void Main(string[] args) {
Calc calc = delegate(int a,
int b)
{
return
a+b;
};
}
이번엔 람다식을 이용한 예문을 보자. 먼저 익명 메소드를 위해 델리게이트를 선언
delegate int Calc(int a, int b);
……
……
//두개의 매개변수
a,b를 입력받아 그 합을 리턴하는 익명 메소드를 람다식으로 만듬
static void Main(string[] args) {
Calc calc = (int a, int b)
=> a+b;
}
C# 컴파일러에서는 위 코드를 더 간결하게 “형식 유추(Type
Inference)”라고 해서 매개변수의 형식을 제거할 수 있다.(델리게이트의 선언 코드로부터 형식을 유추함)
delegate int Calc(int a, int b);
…
…
Calc calc = (a, b) =>
a+b;
[람다식 예제]
using System;
namespace Lambda
{
class Program
{
delegate int Calc(int a, int
b);
static void Main(string[]
args)
{
Calc cal = (a, b)
=> a + b;
int sum = cal(1,
2);
Console.WriteLine("1+2=" + sum);
}
}
}
[결과]
1+2=3
[과제]
수를 입력하면 제곱근을 구하는 익명메소드를 람다식을 delegate, lambda 식을 이용하여 구하시오.
오라클자바커뮤니티 오프라인 교육센터, 개발자 전문교육, 개인80%환급 www.oraclejavacommunity.com
평일주간(9:30~18:20) 개강
(5/26)SQL초보에서실전전문가까지
(5/26)안드로이드개발자과정
(5/26)C#4.0,ADO.NET,Network 프로그래밍
(5/26)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(5/27)JAVA,ORACLE 실무개발자과정
(5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정
(5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
평일야간(19:00~21:50) 개강
(5/22)안드로이드개발자과정
(5/22)C#,ASP.NET마스터
(5/23)SQL초보에서실전전문가까지
(5/26)웹퍼블리싱 마스터
(5/28)Spring3.X, MyBatis, Hibernate실무과정
(5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(5/24)Spring3.X, MyBatis, Hibernate실무과정
(5/24)C#,ASP.NET마스터
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/24)안드로이드개발자과정
(5/24)SQL초보에서실전전문가까지
(5/24)실무예제로 배워보는 jQuery(개발자/디자이너를위한)
주말저녁(18:30~22:20) 개강
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
평일주간(9:30~18:20) 개강
(5/26)SQL초보에서실전전문가까지
(5/26)안드로이드개발자과정
(5/26)C#4.0,ADO.NET,Network 프로그래밍
(5/26)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(5/27)JAVA,ORACLE 실무개발자과정
(5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정
(5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
평일야간(19:00~21:50) 개강
(5/22)안드로이드개발자과정
(5/22)C#,ASP.NET마스터
(5/23)SQL초보에서실전전문가까지
(5/26)웹퍼블리싱 마스터
(5/28)Spring3.X, MyBatis, Hibernate실무과정
(5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(5/24)Spring3.X, MyBatis, Hibernate실무과정
(5/24)C#,ASP.NET마스터
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/24)안드로이드개발자과정
(5/24)SQL초보에서실전전문가까지
(5/24)실무예제로 배워보는 jQuery(개발자/디자이너를위한)
주말저녁(18:30~22:20) 개강
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
댓글 없음:
댓글 쓰기