문제

현재 C#3.0의 모든 새로운 기능을 배우려고 노력하고 있습니다. 나는 아주 좋은 컬렉션을 찾았습니다 LINQ를 연습하는 샘플 그러나 나는 Lambda와 비슷한 것을 찾을 수 없습니다.

람다 기능을 연습 할 수있는 곳이 있습니까?

업데이트

LINQPAD는 LINQ (제안하는 사람을위한 THX)를 배우고 약간의 표현에서 약간 Lambda를 사용하는 것이 좋습니다. 그러나 나는 Lambda의 더 구체적인 운동에서 흥미로울 것입니다.

도움이 되었습니까?

해결책

linqpad LINQ 학습을위한 좋은 도구입니다

다른 팁

Lambdas는 일단 머리를 돌아 다니면 "얻는"것입니다. 현재 대의원을 사용하는 경우 람다로 교체 할 수 있습니다. 또한 System.Action<...>, System.Func<...>, 그리고 System.Predicate<...> 추가는 좋은 바로 가기입니다. 구문을 보여주는 몇 가지 예는 도움이 될 것입니다 (경고 : 그들은 비정상적이지만 기능을 교체 할 수있는 방법을 설명하고 싶었습니다).

public static void Main()
{
    // ToString is shown below for clarification
    Func<int,string,string> intAndString = (x, y) => x.ToString() + y.ToString();
    Func<bool, float, string> boolAndFloat = (x, y) => x.ToString() + y.ToString();

    // with declared
    Combine(13, "dog", intAndString);
    Combine(true, 37.893f, boolAndFloat);

    // inline
    Combine("a string", " with another", (s1, s2) => s1 + s2);
    // and multiline - note inclusion of return
    Combine(new[] { 1, 2, 3 }, new[] { 6, 7, 8 },
        (arr1, arr2) =>
        {
            var ret = "";
            foreach (var i in arr1)
            {
                ret += i.ToString();
            }
            foreach (var n in arr2)
            {
                ret += n.ToString();
            }

            return ret;
        }
    );

    // addition
    PerformOperation(2, 2, (x, y) => 2 + 2);
    // sum, multi-line
    PerformOperation(new[] { 1, 2, 3 }, new[] { 12, 13, 14 },
        (arr1, arr2) =>
        {
            var ret = 0;
            foreach (var i in arr1)
                ret += i;
            foreach (var i in arr2)
                ret += i;
            return ret;
        }
    );

    Console.ReadLine();

}

public static void Combine<TOne, TTwo>(TOne one, TTwo two, Func<TOne, TTwo, string> vd)
{
    Console.WriteLine("Appended: " + vd(one, two));
}

public static void PerformOperation<T,TResult>(T one, T two, Func<T, T, TResult> func)
{
    Console.WriteLine("{0} operation {1} is {2}.", one, two, func(one,two));
}

예를 들어 System.action을 사용할 때는 바로 가기 구문이었습니다.

var a = new Action(() => Console.WriteLine("Yay!"));

또는 할 수 있습니다 :

Action a = () => Console.WriteLine("Yay");

당신이있을 때 Action, Func, 또는 Predicate 그것은 당신이 괄호를 생략 할 수있는 한 가지 주장을 가져옵니다.

var f = new Func<int, bool>(anInt => anInt > 0);

또는:

// note: no var here, explicit declaration
Func<int,bool> f = anInt => anInt > 0;

대신에:

Func<int,bool> f = (anInt) => anInt > 0;

또는 극단으로 가기 위해 :

Func<int,bool> f = (anInt) =>
{
    return anInt > 0;
}

위에서 볼 수 있듯이 단일 라인 Lambdas Func 람다는 그렇게합니다.

Lambdas를 사용하는 방법을 배우는 가장 좋은 방법은 컬렉션과 함께 많은 작업을 수행하고 네임 스페이스 사용에 System.linq를 포함시키는 것입니다. 컬렉션에 대한 다양한 확장 방법이 표시되며 대부분의 방법이 허용됩니다. 람다에 대한 지식을 행사하십시오.

내가 찾은 최고는 이것입니다 링크 순간. 연습을 충족시킨 퀴즈이지만 더 많은 람다와 Linq가 적습니다.

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