У меня есть List
в моей модели Elm.В сообщении Drag
, содержащем предыдущий и следующий (начиная с нуля) индекс элемента, я хочу переместить элемент.Это код, который я использую сейчас.Сначала я конвертирую в Array
, затем использую слайсы для перестановки массива, и, наконец, конвертирую обратно в List
.Есть ли лучший способ (возможно, не с участием массивов).Обратите внимание, что в списке никогда не будет больше 5 элементов.
Drag { prev, next } ->
let
arr =
Array.fromList model.list
temp =
Array.append
(Array.slice 0 prev arr)
(Array.slice (prev + 1) (Array.length arr) arr)
list_ =
Array.toList <|
Array.append
(Array.append
(Array.slice 0 next temp)
(Array.slice prev (prev + 1) arr)
)
(Array.slice next (Array.length temp) temp)
model_ =
{ model | list = list_ }
in
( model_, Cmd.none )