문제

나는 정말로 그렇지 않다 얻다 람다 표현식.ALGOL 시절부터 존재해 왔지만 Python과 Ruby가 인기를 끌었던 꽤 최근까지는 이에 대해 들어보지 못했습니다.이제 C#에는 => 구문, 내 세계(.NET)의 사람들은 lamdba 식에 대해 점점 더 많이 이야기하고 있습니다.

나는 람다 미적분학에 관한 Wikipedia 기사를 읽었지만 실제로 수학 전문가는 아닙니다.실무적인 측면에서는 잘 이해가 되지 않습니다.람다 표현식은 언제 사용합니까?왜?그것이 내가 해야 할 일인지 어떻게 알 수 있나요?

람다 식 문제를 해결하기 전과 후의 형식으로 어떻게 해결할 수 있는지 예를 보여줄 수 있나요?어떤 명령형 언어라도 괜찮지만 C#이 이해하기 가장 쉽습니다.

도움이 되었습니까?

해결책

기본적으로 C#에 관한 한 Lambda Expressions는 대의원 (또는 표현 트리를 만들기 쉬운 방법입니다.

C# 1에서는 일반 방법에서 대의원 인스턴스 만 만들 수있었습니다. C# 2에서 우리는 익명의 방법을 얻었습니다. C# 3에서 우리는 더 간결한 익명 방법과 같은 Lambda 표현을 얻었습니다.

그들은 하나의 값을 취하고 값을 반환하는 논리를 표현하고 싶을 때 특히 간결합니다. 예를 들어 LINQ의 맥락에서 :

                       // Only include children - a predicate
var query = dataSource.Where(person => person.Age < 18) 
                       // Transform to sequence of names - a projection
                      .Select(person => person.Name);

다른 측면과 함께 이것에 대한 자세한 토론이 있습니다. 폐쇄에 관한 내 기사.

다른 팁

답변 이 질문 당신에게 유용 할 수 있습니다.

람다 함수는 익명 함수일 뿐입니다.

예를 들어, Python에서는 목록의 모든 요소를 ​​두 배로 늘리고 싶습니다.그렇게 하는 방법에는 거의 세 가지가 있습니다.

목록 표현식:

[2*x for x in list]

명시적 기능:

def double(x):
    return 2*x
map(double, list) # iirc

람다 사용:

double = lambda x : 2*x
map(double, list)

따라서 대부분의 언어에서 람다는 새로운 함수를 생성하는 데 따른 구문상의 오버헤드를 피하기 위한 방법일 뿐입니다.

이것은 C#에서 Lambda Expressions를 사용하는 데 큰 아이디어를 이해하는 방법에 대해 본 더 나은 설명 중 하나입니다.

http://www.developingfor.net/c-30/upgrade-your-c-skills-part-3 lambda-expressions.html

.NET에서 Lambda 표현식의 주된 사용은 목록으로 작업 할 때였습니다. Lambda 표현식을 사용하면 데이터베이스 테이블을 검색하기 위해 SQL 문을 작성하는 것과 비슷한 방식으로 목록에 쿼리를 구축 할 수 있습니다.

람다 표현식은 기능적 값입니다 ( 'int'와 'string'이 값인 것과 같은 의미에서). 이것은 가능하다는 것을 의미합니다

  • Lambda 표현식을 보유하는 변수 정의 (이것은 함수 정의와 동일합니다).
  • 방법이나 함수에서 람다 표현식을 반환하십시오
  • 함수 또는 방법에 대한 인수로 Lambda 표현을 보내십시오.

지도, 필터 또는 접기 (모든 기능 언어로)와 같은 기능을 살펴보고 Lambda 표현식이 다른 기능에 대한 인수로 어떻게 사용되는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top