Как справиться с сгруппированным предупреждением?

Есть пара групп def, и когда я пишу @spec, он предупреждается с помощью warning: clauses for the same def should be grouped together, def foo/2 was previously defined. Есть ли обходной путь для этого?

Хотя предупреждение полезно, но я бы хотел, чтобы оно игнорировало @spec.

@spec foo(:id, integer) :: {:not_found} | {:ok, String.t}
def foo(:id, id) do
  # some logic
end

@spec foo(:email, String.t) :: {:not_found} | {:ok, String.t}
def foo(:email, email) do
  # some logic
end

person hykw    schedule 29.06.2016    source источник


Ответы (1)


@spec foo(:id, integer) :: {:not_found} | {:ok, String.t}
@spec foo(:email, String.t) :: {:not_found} | {:ok, String.t}

def foo(:id, id) do
  # some logic
end

def foo(:email, email) do
  # some logic
end

или вы могли бы вместо этого указать одну спецификацию

@spec foo(:id | :email, integer | String.t) :: {:not_found} | {:ok, String.t}

Я не тестировал его, но он должен работать.

person NoDisplayName    schedule 29.06.2016
comment
Спасибо. Я пошел по первому пути, и это уладило предупреждение. - person hykw; 01.07.2016