Хотя ответ Дениса технически верен, использование Kernel.length/1
в целом является плохой практикой, поскольку обходит весь список .
Использовать прямойВместо этого сопоставление с образцом:
date_list =
case clicks do
[] -> []
[_] -> start_date
[_ | _] ->
[from: start_date, until: end_date]
|> Interval.new()
|> Enum.to_list()
end
Также обратите внимание, что правила Elixir заставляют запускать канал с необработанным значением , а всегда используют скобки в вызовахfunctions.
В соответствии с проблемой определения объема в вашем первоначальном вопросе, поскольку в Elixir нет присваивания переменной , а также нет переменных вообще , компилятор не может иметь локальный шредингер date_list
.Помните: date_list = ...
это не назначение, это повторное связывание .