Size: a a a

Elm Lang сообщество разработчиков

2020 March 29

MP

Max P in Elm Lang сообщество разработчиков
Ryner :: () -> IO ❄️
Я делал строками и вот что у меня сейчас
Не совсем понял "вот что у меня сейчас"  = просто пример показали, или это с оттенком "и вот такие у меня проблемы" ?
источник

MP

Max P in Elm Lang сообщество разработчиков
я пока не вижу проблемы, если будет просто строка.. хм
источник

R:

Ryner :: () -> IO ❄️ in Elm Lang сообщество разработчиков
Max P
Не совсем понял "вот что у меня сейчас"  = просто пример показали, или это с оттенком "и вот такие у меня проблемы" ?
источник

MP

Max P in Elm Lang сообщество разработчиков
делаю выводы: все ок) если значение не выбрано, то селект пустой соответственно.
источник

R:

Ryner :: () -> IO ❄️ in Elm Lang сообщество разработчиков
Max P
делаю выводы: все ок) если значение не выбрано, то селект пустой соответственно.
У нас у всех что-то должно быть
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Max P
Всем привет, хочу показать юзеру селект: "выберите шрифт", и туда 2-4 значения, ну например: "Verdana" и "Comis Sans MS", есть ли смысл эти значения делать вариантами, или оставить строкой?

если говорить про код, получается выбираю между:
fontFamily: Maybe String (или вообще просто String)
и

type FontFamily = Verdana | ComicSansMs
fontFamily: maybe FontFamily

?

p.s. после выбора и отображения в селекте это значение еще улетит по порту в js, и больше ничего.
Зависит от того, список этот динамический или статический. Если  список статический, то есть описывается один раз в коде и если и меняется, то редко и как часть какой-то фичи, то я бы сделал maybe FontFamily

Ну а если список динамичен, может меняться и редактироваться пользователем, либо запрашивается с бэка то maybe String думаю вполне подойдёт
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Но maybe думаю должно присутствовать все равно, потому что обозначение отсутствия значения пустой строкой не самая хорошая идея
источник

KA

Konstantin Alifanov in Elm Lang сообщество разработчиков
А вы кстати используете тип NonEmptyString в каком-нибудь виде, запрещающий строке быть пустой тем или иным способом? Вроде бы неплохая практика, но я сам пока не разобрался как часто стоит её использовать.
источник
2020 March 30

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Что есть "пустая" применительно к строке? Всё зависит от контекста
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Строкая, забитая пробелами, не пуста, но смысла не несёт
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
А если вводить "осмысленные" типы вроде NonBlankString, то а) нужно будет приличный API делать, что долго и б) всё равно не хватит для решения всех возможных задач :)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Вот сделаете вы функцию
NonBlank.trim : String -> NonBlankString
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
А как её применить к NonEmptyString?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
(это я про сложность API)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
С тайпклассами можно было бы порешать через
trim :: StringLike a => a -> NonBlankString
Но даже так получается сложновато
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Потому что начнёте вы делать операции типа
substr : Int -> Int -> NonBlankString -> ?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Всегда делать Maybe на выходе?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Это ж повеситься можно, когда начнешь композировать такие функции
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Тут нужны refinement types. И/или тесты.
источник

MP

Max P in Elm Lang сообщество разработчиков
Denis Krivosheev
Зависит от того, список этот динамический или статический. Если  список статический, то есть описывается один раз в коде и если и меняется, то редко и как часть какой-то фичи, то я бы сделал maybe FontFamily

Ну а если список динамичен, может меняться и редактироваться пользователем, либо запрашивается с бэка то maybe String думаю вполне подойдёт
спасибо за ответ
источник