Size: a a a

2020 October 10

PD

Prunkles Dreemurr in F# Chat
IdiocyAcceptance
А внутри if jsonValue is array then match array with ... И так далее
Это настоящая измена мощному фшарповскому паттерн матчингу, в сторону обычных ифов
источник

I

IdiocyAcceptance in F# Chat
Матчинг на if else ничем не лучше if else, имхо
источник

I

IdiocyAcceptance in F# Chat
Тут вкусовщина
источник

PD

Prunkles Dreemurr in F# Chat
IdiocyAcceptance
Матчинг на if else ничем не лучше if else, имхо
Мне не просто if/else нужен
источник

I

IdiocyAcceptance in F# Chat
Тогда делай на jsonValue несколько паттернов, где это массив, где другие значения и возвращай нужное значение в виде choice
источник

I

IdiocyAcceptance in F# Chat
gsomix
То, что нужно в дальнейшем сопоставить, следует вернуть из активного паттерна.
Ему в любом случае нужно сначала понять, является jsonValue массивом или нет, достать этот массивч а потом только матчить массив
источник

I

IdiocyAcceptance in F# Chat
А так он написал паттерн на одно, а матчит другое
источник

g

gsomix in F# Chat
Prunkles Dreemurr
Я вот догадывался до этого, но оно же также напрямую зависит от получаемых значений
Я бы предложил в качестве параметра передавать массив ключей, а возвращать массив значений для сопоставления.
источник

PD

Prunkles Dreemurr in F# Chat
IdiocyAcceptance
Ему в любом случае нужно сначала понять, является jsonValue массивом или нет, достать этот массивч а потом только матчить массив
JsonValue.Record это (string * JsonValue)[] , поэтому это массив по определению
источник

PD

Prunkles Dreemurr in F# Chat
gsomix
Я бы предложил в качестве параметра передавать массив ключей, а возвращать массив значений для сопоставления.
Тогда это уже будет частный случай для JsonValue. Впрочем, такой вариант тоже неплох
источник

I

IdiocyAcceptance in F# Chat
Prunkles Dreemurr
JsonValue.Record это (string * JsonValue)[] , поэтому это массив по определению
Тогда у тебя матч идёт jsonRecord jr -> match jr with, разве нет?
источник

g

gsomix in F# Chat
IdiocyAcceptance
Тогда у тебя матч идёт jsonRecord jr -> match jr with, разве нет?
В F# можно городить многоэтажные шаблоны без вложенных матчей.
источник

PD

Prunkles Dreemurr in F# Chat
IdiocyAcceptance
Тогда у тебя матч идёт jsonRecord jr -> match jr with, разве нет?
Я сначала матчу, является ли это рекорд, а потом хочу матчить, содержит ли он свойства с такими-то названиями, и потом сматчить значения этих свойств. Вариант @gsomix в данном случае подходит
источник

I

IdiocyAcceptance in F# Chat
gsomix
В F# можно городить многоэтажные шаблоны без вложенных матчей.
Понял
источник

I

IdiocyAcceptance in F# Chat
Prunkles Dreemurr
Я сначала матчу, является ли это рекорд, а потом хочу матчить, содержит ли он свойства с такими-то названиями, и потом сматчить значения этих свойств. Вариант @gsomix в данном случае подходит
Понятно, спасибо за инфу. Видимо я банально плохо знаю активные паттерны
источник

PD

Prunkles Dreemurr in F# Chat
Итого получается что-то такое
источник

PD

Prunkles Dreemurr in F# Chat
Жаль, конечно, что нельзя одновременное передать и данные и нормально сматчить результат
источник

g

gsomix in F# Chat
Prunkles Dreemurr
Жаль, конечно, что нельзя одновременное передать и данные и нормально сматчить результат
Непонятно, как это должно работать. Особенно, когда все элементы связаны с именами, а значит любое подмножество значений подходит. :)
источник

g

gsomix in F# Chat
Prunkles Dreemurr
Итого получается что-то такое
А здесь не получится чуть аккуратнее, если сделать шаблон на одно свойство и объединить через & (амперсанд)?
источник

PD

Prunkles Dreemurr in F# Chat
Сейчас попробуем
источник