Size: a a a

2020 October 28

jc

john conor  in pro.elixir
а подход да верный
источник

NM

Nikita Mistyukov in pro.elixir
если оно не в списке - то оно вернется на первом матчинге, а если в списке, то добавится индекс и по новой. где потеряешь?
источник

NM

Nikita Mistyukov in pro.elixir
а, ну да. еще пару клауз)
источник

NM

Nikita Mistyukov in pro.elixir
ну это в любом случае лучше чем вот вложенные условия кмк)
источник

PG

Pig Greenest in pro.elixir
Ihor Katkov
я бы разбил get_free_name на две функции
согласен
источник

NM

Nikita Mistyukov in pro.elixir
def get_project_name(list_names, name, _, _) when name not in list_names, do: name
def get_project_name(list_names, _, generated_name, _) when generated_name not in list_names, do: generated_name
def get_project_name(list_names, name, _, idx // 2), do: get_project_name(list_names, "#{name} #{idx}", idx + 1)
источник

jc

john conor  in pro.elixir
Nikita Mistyukov
если оно не в списке - то оно вернется на первом матчинге, а если в списке, то добавится индекс и по новой. где потеряешь?
потеряешь когда имя маша 2 тоже занято
источник

NM

Nikita Mistyukov in pro.elixir
с тремя клаузами потеряю?)
источник

jc

john conor  in pro.elixir
щаз вчитаюсь
источник

PG

Pig Greenest in pro.elixir
Nikita Mistyukov
def get_project_name(list_names, name, _) when name not in list_names, do: name
def get_project_name(list_names, name, idx // 2), do: get_project_name(list_names, "#{name} #{idx}", idx + 1)

а вот так не сробит?
нет, list_names неизвестен во время компиляции
источник

jc

john conor  in pro.elixir
известен
источник

jc

john conor  in pro.elixir
это арай с набором всех имен
источник

jc

john conor  in pro.elixir
а ну не во время компилляции
источник

NM

Nikita Mistyukov in pro.elixir
а гуарды только на компиляцию чтоли действуют? уж и забыл
источник

PG

Pig Greenest in pro.elixir
да, in же раскрывается цепочку равенств
источник

NM

Nikita Mistyukov in pro.elixir
def empty_map?(map) when map_size(map) == 0, do: true
def empty_map?(map) when is_map(map), do: false

т.е вот так можно - в оф доке. а ин лист низя?)
источник

NM

Nikita Mistyukov in pro.elixir
во время компиляции мап сайз уже известен?
источник

PG

Pig Greenest in pro.elixir
Nikita Mistyukov
def empty_map?(map) when map_size(map) == 0, do: true
def empty_map?(map) when is_map(map), do: false

т.е вот так можно - в оф доке. а ин лист низя?)
такие примитивы в эрланге есть, а in нету
источник

NM

Nikita Mistyukov in pro.elixir
да, в иексе ругается)
источник

NM

Nikita Mistyukov in pro.elixir
def get_project_name(list_names, name, generated_name, idx // 2) do
 cond do
   name not in list_names -> name
   generated_name is nil -> get_project_name(list_names, name, "#{name} #{idx}", idx + 1)
   generated_name not in list_names -> generated_name
   true -> get_project_name(list_names, name, "#{name} #{idx}", idx + 1)
 end
end
источник