Как преобразовать Maybe (List) в Just List в Elm? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть список, который состоит из списка строк, объявленных как

type alias Model =
    {board : List (List String)
    }

init : Model
init =
    {board = 
         [ ["","",""]
          ,["","",""]
         ,["","",""]
           ]
     }

В моей функции обновления я пытаюсь получить доступ к внутреннему элементу списков через

 (getAt col (getAt row model.board))

Я получаю следующую ошибку, когда пытаюсь его скомпилировать. Как мне конвертировать из списка «Возможно» в список «Просто» или просто список?

The 2nd argument to `getAt` is not what I expect:

65|                         (getAt col (getAt row model.board))
                                        ^^^^^^^^^^^^^^^^^^^^^
This `getAt` call produces:

    Maybe (List String.String)

But `getAt` needs the 2nd argument to be:

    List a

1 Ответ

0 голосов
/ 26 марта 2020

Сначала ответьте на свой вопрос: используйте case .. of или Maybe.withDefault.

Но похоже, что вы хотите что-то сделать, для какого списка не является правильным решением.

Если у вас есть список, и вы знаете, что он никогда не бывает пустым, используйте что-то вроде List.Nonempty

Если вы знаете числа записей в каждом списке, используйте что-то вроде vector

Для вашей 2D доски я бы предложил создать свой собственный (непрозрачный) пользовательский тип. Или может быть эта матрица будет полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...