Привет StackOverflow!
Предположим, у меня есть приложение Elm с переменным количеством полей ввода текста. Я хотел бы отразить состояние этих полей ввода в модели.
Модель и вид достаточно просты: вид просто имеет где-то поле Array String
.
Затем представление вычисляется просто путем вызова List.map (HTML input ...)
в этом списке строк.
Однако я немного растерялся, как сделать функцию обновления и тип сообщения.
Сообщение может быть примерно таким:
type Msg = InputFieldUpdated Int String
Здесь Int относится к позиции в массиве, которую имеет обновляемая строка. Однако, если я делаю это таким образом, я могу создавать сообщения, которые ссылаются на несуществующие позиции массива, просто устанавливая для Int значение, выходящее за пределы допустимого диапазона.
Для фиксированного количества элементов ввода можно очень элегантно решить эту проблему, просто используя тип объединения с различным значением для каждого входа, но как насчет моей ситуации? В области «сделать невозможные состояния невозможными», есть ли какая-то хитрость для того, чего мне не хватает?