จะรับมือกับการเตือนแบบรวมกลุ่มได้อย่างไร?

มีกลุ่ม 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