검색결과 리스트
lambda에 해당되는 글 5건
- 2010.03.29 TechDays 2010 Spring 온라인 컨퍼런스
- 2009.06.24 [VC++] 10. Lambda - 네 번째
- 2009.06.17 [VC++] 10. Lambda - 세 번째
- 2009.06.10 [VC++] 10. Lambda - 두 번째
- 2009.06.03 [VC++] 9. Lambda ( 람다 ) - 첫 번째
클로져 사용하기 2
<Code 4> 에서는(세 번째 글의 마지막 예제) 하나의 변수만을 캡쳐했지만 복수의 변수를 캡쳐하는 것도 가능할까요? 네 당연히 가능합니다.
‘[]’ 사이에 캡쳐할 변수를 선언하면 됩니다.
[ &Numb1, &Numb2 ]
그럼 ‘[&]’로 하면 어떻게 될까요? 이렇게 하면 람다 식을 정의한 범위 내에 있는 모든 변수를 캡쳐할 수 있습니다.
............ 나머지 글은 여기에서 보세요^^;
클로져 사용하기 1
그럼 이제 클러져에 대해서 알아 보겠습니다.
람다를 사용할 때 람다 식 외부에 정의되어 있는 변수를 람다 식 내에서 사용한 후 결과를 그 변수에 그대로 저장하고 싶을 때가 있습니다. 이럴 때 클로져를 사용하면 됩니다.
클로져는 참조나 복사로 전달이 가능합니다. 참조를 사용하는 경우는 &을 사용하면 됩니다.
람다 표현의
에서 앞의 ‘[]’ 사이에 클로져할 변수를 기술하면 됩니다.
... 나머지 글은 여기에서 봐 주세요^^
C++에서의 람다 사용 법
람다 사용 방법은 아래와 같습니다.
int 값에 50을 더한 후 반환하는 람다 함수
위 방법은 반환 값의 type이 “x+ 50”의 값의 type으로 추정되어 반환됩니다.
만약 반환 값 type을 지정하고 싶다면
라고 하면 됩니다. 그리고 참고로 반환하지 않을 것이면 반환하지 않아도 됩니다.
또한 클로져를 사용하면 “[]” 사이에 참조를 넘길 수도 있습니다.
그럼 람다 사용 방법을 좀 더 알기 쉽도록 여러 가지 사용 예를 보여 드리겠습니다.
....... 나머지는 여기서 봐 주세요 ^^;
이번은 C++0x에서의 새로운 기능 중의 하나인 Lambda에서 대해서 설명하겠습니다.
C#이나 동적 프로그래밍 언어를 공부 하신 분들은 Lambda에 대해서 들어보셨을 것입니다.
람다를 잘 모르는 분들을 위해서 현재 가장 쉽게 Lambda를 접할 수 있는 C#을 통해서 Lambda 사용 예를 들어보겠습니다.
(C#을 모르고 C++만 아는 분들이라도 무리 없이 볼 수 있으니 그냥 넘어가지 마시고 봐 주세요. C# 이야기는 조금만 할께요^^)
C#에서의 람다 식
람다 식은 식과 문을 포함하여 대리자나 식 트리 형식을 만드는데 사용할 수 있는 익명함수입니다.
형식은 다음과 같습니다.
람다 식은 주로 어떤 라이브러리의 식과 결합해서 사용할 식을 만들 때 사용합니다.
람다 식이 없다면 다른 식과 결합하기 위해서는 따로 함수를 만들어서 사용해야 되므로 거추장스러워 지는데 람다 식을 사용하면 아주 간단하게 구현할 수 있습니다.
< Code 1. C# - 이름 중 문자 길이가 TextLength 보다 작은 이름 >
string[] MobNames = { "Babo",
"Cat", "Orge",
"Tester", "CEO"
};
int TextLength = 4;
// 람다 식 사용
var ShortNames1 = MobNames.Where(MobName
=> MobName.Length < TextLength);
// foreach
사용
List<string>
ShortNames2 = new List<string>();
foreach(string
MobName in MobNames)
{
if
(MobName.Length < TextLength)
{
ShortNames2.Add(MobName);
}
}
<Code 1>을 보면 람다 식을 사용하면 한 줄로 끝나는 것을 람다 식을 사용하지 않으면 List 컨테이너를 생성하고 foreach 구문을 사용하여 이름을 하나씩 조사하여 List 컨테이너에 추가해야 되는 코드가 필요해집니다.
C#에서 람다 식이 가장 유용하게 사용되는 부분은 Linq 일겁니다.
만약 Linq에서 람다 식을 사용하지 않게 된다면…Linq 사용하기가 꽤 힘들어지겠죠
댓글