Выделить в отдельную функцию + pattern matching?
case product.sizes do [_] -> {nil, nil} _ -> case Enum.find(product.sizes, fn s -> s.size_id == size_id end) do nil -> {nil, nil} s -> {UUID.string_to_binary!(s.size_id), s.size_name} end end
ура, спецолимпиада
s = Enum.find(product.sizes, fn s -> s.size_id == size_id end) if Enum.count(product.sizes) == 1 or is_nil(s) do {nil, nil} else {UUID.string_to_binary!(s.size_id), s.size_name} end
s = Enum.find(product.sizes, fn s -> s.size_id == size_id end) cond do is_nil(s) -> {nil, nil} Enum.count(product.sizes) == 1 -> {nil, nil} true -> {UUID.string_to_binary!(s.size_id), s.size_name} end
После этих слов в эликсир чате начался сущий кошмар...
with n when n > 1 <- Enum.count(product.sizes), %{} = s <- Enum.find(product.sizes, fn s -> s.size_id == size_id end) do {UUID.string_to_binary(s.size_id), s.size_name} else _ -> {nil, nil} end
Все варианты с Enum.count совершенно неправильные
Я бы только заменил Enum.count на [_ | [_ | _]] <- product.sizes
тогда уж [_, _ | _]
Обсуждают сегодня