Hog
да для любого варианта
x
|(flags.red) => третий кейс |(flags.red, flags.blue) => четвертый кейс вот для сетов порядок будет решающим
Вот не хотелось бы. Я же глазами вижу что это разные кейсы, интуитивно
Hog
матч так работает - первый заматченный выдаст
Hog
4 и 3 надо местами поменять
Pavel
не обязятельно. правильно написаный паттерн разрулит
Vasily
Задача интересная, на самом деле
x
Плюс ещё вариант такой: |(flags.yellow, flags.green, _) => ещё один кейс, когда я говорю что обязательно стоит три флага но мне поебать на третий, главно первые два такие. Но их три.
Shub
да блин
Shub
(черт, каждый раз дергаюсь от флайера admin)
Vasily
Хотя выглядит как натягивание совы на глобус
Hog
не обязятельно. правильно написаный паттерн разрулит
это будет ещё более вырвиглазно, чем твой предыдущий вариант
Shub
match сопоставляет со значениями тоже, то есть работает как switch-case. единственное, что ты “теряешь” - компилятор уже не скажет, если какая-то комбинация не обрабатывается.
Vasily
Хотелось бы описания задачи
Shub
если б ты пояснил, какой аспект проблемы остается нерешенным - было бы проще подсказать
Vasily
С т.з. предметной области
Shub
_ -> ()
если это опустить, то в случае с сопоставлением по значениям компилятор ничего не скажет же, насколько я понимаю
Vasily
Скажет
Vasily
IncompleteMatchException
Vasily
Вроде так
x
С т.з. предметной области
Там выше был пример. Несколько хуже всё у них, это финансы - есть инстанс кешвлоу с двумя флаговыми полями, стрингом и децмалом. И надо по их сочетаниям разруливать разное обращение с этим кешфловом. Точнее не скажу, там кругом NDA.
x
В постейшем случае просто тру фалс возвернуть на определенные сочетания.
Hog
Set :)
x
Порядок флагов имеет значение?
Нет, конечно. Там на энамах c#
x
Ща повторю ссылку
x
https://repl.it/repls/ComfortableValidPipelining
Vasily
Короче, в твой du надо добавить Any как минимум
x
если б ты пояснил, какой аспект проблемы остается нерешенным - было бы проще подсказать
Аспект такой: код выглядит кошмарно. Куча логических ключей, сложно понять какие варианты к чему приведут
Vasily
Строй дерево
Hog
Строй дерево
сажай сына и расти дом!
Pavel
type MyEnum = | YELLOW = 1 | GREEN = 2 | BROWN = 4 | RED = 8 | BLUE = 16 let inline (|FLAG|_|) (mask : 'a seq) x = if Seq.reduce (|||) mask = x then Some x else None let isXXX (x : MyEnum) = match x with | FLAG [MyEnum.YELLOW; MyEnum.GREEN] _ -> 1 | FLAG [MyEnum.RED; MyEnum.BROWN; MyEnum.RED] _ -> 2 | FLAG [MyEnum.RED] _ -> 3 | FLAG [MyEnum.RED; MyEnum.BLUE] _ -> 4 | _ -> 0
Vasily
Не прокатит
Pavel
что и у кого не прокатит?
Shub
Скажет
ой, точно
Hog
поясни мысль
мож я тупля
Hog
ну... в каждом кейсе - полный набор флагов
Pavel
ну... в каждом кейсе - полный набор флагов
мысль все еще вне поля зрения
Shub
ну... в каждом кейсе - полный набор флагов
не полный. а требуемый. мы ж не знаем, какие комбинации он хочет обрабатывать
Hog
| FLAG [MyEnum.RED] _ -> 3 | FLAG [MyEnum.RED; MyEnum.BLUE] _ -> 4
Hog
3 сработает раньше 4 всегда
Shub
ну да, так матчинг работает
Shub
кмк из коробки частичного матчинга не будет. может быть можно active patterns приспособить, но пусть ОП нам скажет, требуется это ему или нет
Shub
так, ну простите, интуицию в компилятор семейства ML пока не завезли
x
Ну у меня в голове такой вариант был: шаг один- создать туплю с интересующими меня значениями из обьекта, шаг два написать в столбик матчи, в которых будет четко видно какие поля в тупле мне интересны для каждого кейса а какие нет
x
Возможно, в природе такого нет
x
Но надо раскурить актив паттерны
Nikolay
Оцените уровень моей поехавшести, если я решил учить Си в 2018
x
Ну лучше чем с++
Vladislav
Nikolay
Опять посещаешь странные мероприятия?
Nikolay
Ну лучше чем с++
Ну, востребовано
Vasiliy
уууу красота это где и какой город?
Vasiliy
оу. это еще военный оркестр ?
Vladislav
уууу красота это где и какой город?
Питер, академическая капелла, адмиралтейский оркестр
Vladislav
Штрауса играют
Nikolay
Штрауса играют
Ты чё, интеллегент такой что-ли?
Hog
Ты чё, интеллегент такой что-ли?
Питер ж. Там все такие.
Vladislav
Ты чё, интеллегент такой что-ли?
Да я просто на классику подсел года 3 как
Vladislav
Ее слушаю в основном
Hog
Да я просто на классику подсел года 3 как
Йо & Игудесман - тоже классика :)))))
Hog
https://www.youtube.com/watch?time_continue=29&v=MNtYYuWILNE
Hog
это исполнители :)
Hog
я ж не из питера - мне пофиг :)
Vladislav
это исполнители :)
Не, я про автора писал)
Nikolay
Влад, сидящий на классике
Анна
Влад, сидящий на классике
ну ты мастер фотошопа!