val head :: tail = factories
Хотя это не выражение match
, оно включает сопоставление с шаблоном factories
с шаблоном head::tail
, которое может завершиться ошибкой, если factories
равно Nil
.
Решениебезопасное разбиение списка и последующая обработка возможных ошибок:
val (head, tail) = factories.splitAt(1)
head
будет List
и, следовательно, потенциально пустым, поэтому протестируйте с помощью isEmpty
или конвертируйте в Option
, используяheadOption
, а затем используйте стандартные Option
методы для его обработки.