Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Про анонимную лямбду подскажите / 25 сообщений из 28, страница 1 из 2
25.04.2013, 15:22
    #38240106
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Здравствуйте

Вот понадобилось получение понедельника следующей недели, хочу сразу инициализировать
но метод не создавать (одноразовая вещь), а просто лямбдой
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        private readonly DateTime startDate = ((Func<DateTime>)(() =>
        {
            var d = DateTime.Now.AddDays(1);
            while (d.DayOfWeek != DayOfWeek.Monday)
            {
                d = d.AddDays(1);
            }
            return d;
        }))();

чето многовато скобок получается :(
подскажите, пожалуйста, как проще/короче то же самое сделать?
...
Рейтинг: 0 / 0
25.04.2013, 15:53
    #38240181
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганель,
можно так, но проще ли это и короче сомневаюсь
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 private readonly Lazy<DateTime> startDate = new Lazy<DateTime>(() =>
        {
            var d = DateTime.Now.AddDays(1);
            while (d.DayOfWeek != DayOfWeek.Monday)
            {
                d = d.AddDays(1);
            }
            return d;
        }
          );
...
Рейтинг: 0 / 0
25.04.2013, 15:58
    #38240191
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганель,

Код: c#
1.
2.
3.
4.
5.
6.
7.
private DateTime GetNextMonday()
{
  var d = DateTime.Now.AddDays(1);
  while (d.DayOfWeek != DayOfWeek.Monday)
                d = d.AddDays(1);
  return d;
}



а чем так не устраивает?
...
Рейтинг: 0 / 0
25.04.2013, 16:06
    #38240202
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
ПаганельВот понадобилось получение понедельника следующей недели, хочу сразу инициализироватьа если программа запустится в воскресенье вечером и продолжит работать в понедельник? тогда в 00:00 startDate безнадежно устареет.
...
Рейтинг: 0 / 0
25.04.2013, 16:07
    #38240203
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
pationа чем так не устраивает?сейчас-то нормально
просто вдруг потом понадобится часто обращаться...
...
Рейтинг: 0 / 0
25.04.2013, 16:07
    #38240205
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Яростный МечПаганельВот понадобилось получение понедельника следующей недели, хочу сразу инициализироватьа если программа запустится в воскресенье вечером и продолжит работать в понедельник? тогда в 00:00 startDate безнадежно устареет.нет, ее юзеры запускать будут, которые ночью спят
...
Рейтинг: 0 / 0
25.04.2013, 16:09
    #38240208
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганельнет, ее юзеры запускать будут, которые ночью спятосновное правило кодинга: если баг может произойти, он произойдет.
ты же не первый год в программизме..
...
Рейтинг: 0 / 0
25.04.2013, 16:10
    #38240209
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганель, а зачем тут цикл? Следующий день недели
...
Рейтинг: 0 / 0
25.04.2013, 16:12
    #38240214
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
чтобы девочка-оператор пришла на работу в воскресенье это уже маловероятно,
чтобы ночью это вообще невероятно,
но если уж эта одна миллионная выстрелит - скажу что следующей неделей считается неделя после той, в которую прогу запустили, я ж не первый год
...
Рейтинг: 0 / 0
25.04.2013, 16:16
    #38240219
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
cooldeveloperПаганель, а зачем тут цикл? Следующий день недели о, я знал что както так можно, да думать было лень, спасибо
...
Рейтинг: 0 / 0
25.04.2013, 16:16
    #38240222
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганельpationа чем так не устраивает?сейчас-то нормально
просто вдруг потом понадобится часто обращаться...

а если вдруг компьютер на ночь не выключат?
...
Рейтинг: 0 / 0
25.04.2013, 16:18
    #38240228
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
pationа если вдруг компьютер на ночь не выключат?и что? нажали кнопку - создался новый экземпляр класса, отработал, убился
...
Рейтинг: 0 / 0
25.04.2013, 16:25
    #38240241
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
По поводу сабжа, когда хочется лямбду заюзать по месту.

Мне больше нравится такой вариант: просто объявляем лямбду.

Код: c#
1.
Func<DateTime> startDate = () => { return DateTime.Now; };



А в коде дальше используем:

Код: c#
1.
DateTime = startDate();



Всё. И не нужно никаких вкорячиваний сотен скобочек и определений, код чистый и аккуратный.
...
Рейтинг: 0 / 0
25.04.2013, 16:28
    #38240248
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
cooldeveloperпросто объявляем лямбдуя б тогда функцию объявил
но захотелось новых веяний попробовать
...
Рейтинг: 0 / 0
25.04.2013, 16:28
    #38240249
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Используя код из моего рецепта получается следующее:

Код: c#
1.
2.
3.
4.
Func<DateTime> startDate = () =>
{
    return DateTime.Now.AddDays(DateTime.Now.DayOfWeek == DayOfWeek.Monday ? 7 : ((int)DayOfWeek.Monday - (int)DateTime.Now.DayOfWeek + 7) % 7);
};



Код: c#
1.
DateTime = startDate();



Профит? Судить Панагельчику.
...
Рейтинг: 0 / 0
25.04.2013, 16:30
    #38240255
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганельcooldeveloperпросто объявляем лямбдуя б тогда функцию объявил
но захотелось новых веяний попробовать
Ну а какая принципиально разница, что ты в самом определении заюзаешь скобочки (то есть непосредственный вызов) и заюзаешь определение, а потом вызовешь. Не вижу принципиальной разницы.
...
Рейтинг: 0 / 0
25.04.2013, 16:31
    #38240258
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
впишу-ка я в код свой комментарий со ссылкой на codearticles.ru бо чует мое сердце что через месяц глядя на это я нифига не пойму

еще раз спасибо
...
Рейтинг: 0 / 0
25.04.2013, 16:34
    #38240265
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганель, и кстати, это вовсе не новые веяния, а старопердунство из 3.5 фреймворка
...
Рейтинг: 0 / 0
25.04.2013, 16:35
    #38240271
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
ну да, Lazy новее, но я до него еще не дошел, надо будет на досуге почитать
...
Рейтинг: 0 / 0
25.04.2013, 16:38
    #38240279
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганельну да, Lazy новее, но я до него еще не дошел, надо будет на досуге почитать
А, ты про ленивости. Так это Где-то в степи обожает их, вкорячивает куда ни попадя :)
...
Рейтинг: 0 / 0
25.04.2013, 16:44
    #38240302
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
cooldeveloperПаганель, и кстати, это вовсе не новые веяния, а старопердунство из 3.5 фреймворка а новые как выглядят? там ещё более замороченный лямбда-синтаксис?
...
Рейтинг: 0 / 0
25.04.2013, 16:48
    #38240314
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Яростный Меча новые как выглядят? там ещё более замороченный лямбда-синтаксис?
Хм. А новых, вроде, и нет, весь синтаксический сахар из 3.5 тянется.
...
Рейтинг: 0 / 0
25.04.2013, 16:49
    #38240315
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
cooldeveloperПаганельну да, Lazy новее, но я до него еще не дошел, надо будет на досуге почитать
А, ты про ленивости. Так это Где-то в степи обожает их, вкорячивает куда ни попадя :)
никуда попало, а где пахнет сингтоном,
тут по месту, и ленивость нафиг не нужна ( написал что бы не забывали)
обыкновенный акцессор вполне хватит и readonly ой ли?
что до компилятора та pation прав, гораздо спокойней и партикулярней..
...
Рейтинг: 0 / 0
25.04.2013, 16:55
    #38240330
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
Паганель
Код: c#
1.
private readonly DateTime startDate

кстати, а ведь значение можно задать в конструкторе.
если есть конструктор, то может, нафиг вся эта свистопляска с лямбдами?
...
Рейтинг: 0 / 0
25.04.2013, 16:58
    #38240339
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про анонимную лямбду подскажите
можно и так, но конструктор (пока) не планируется, да я уже и без лямбд написал с помощью cooldeveloper
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Про анонимную лямбду подскажите / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]