Где практиковать функцию Лямбды? [закрытый]

Вы должны использовать KeyboardAvoidingView, но не с scrollview, потому что scrollview не имеет высоты. Если вам нужно использовать KeyboardAvoidingView использовать без представления прокрутки, и если вы используете представление прокрутки, то автоматически вы можете прокрутить вверх и увидеть текстовое поле

8
задан Mat 22 September 2012 в 13:21
поделиться

3 ответа

LINQPad является хорошим инструментом для изучения LINQ

6
ответ дан 5 December 2019 в 15:28
поделиться

Лучшей, которую я нашел, является эта ссылка в настоящий момент. Это - тест, которые позволяют встреченной практике, но я хотел бы что-то больше Лямбды и меньше LINQ.

1
ответ дан 5 December 2019 в 15:28
поделиться

Лямбды - просто что-то, что, после того как Вы получаете голову вокруг, Вы "получаете" ее. При использовании делегата в настоящее время можно заменить его лямбдой. Также 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));
}

Главным образом то, что смутило меня, было синтаксисом ярлыка, например, при использовании Системы. Действие, чтобы просто выполнить делегата без параметров Вы могли использовать:

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;
}

Как показано выше, однострочные лямбды не требуют оператора возврата, хотя мультилиния Func лямбды делают.

Я думаю, что Вы найдете лучший способ изучить, как использовать лямбды, должен работать много с наборами и включать Систему. Linq в Ваших пространствах имен использования - Вы будете видеть тонну дополнительных методов для Ваших наборов, и большинство этих методов позволяет Вам осуществлять свое знание лямбд.

4
ответ дан 5 December 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: