1
我有這樣一個簡單的函數:功能重疊的規格
def extract_text({_, _, [text]}) when is_binary(text), do: text
def extract_text(_), do: nil
,我增加了它的規格是:
@spec extract_text(any) :: nil
@spec extract_text({any, any, [text]}) :: text when text: String.t
但是當我運行dializer,我得到以下錯誤:
lib/foo/bar.ex:1: Overloaded contract for 'Elixir.Foo.Bar':extract_text/1 has overlapping domains; such contracts are currently unsupported and are simply ignored
我想我理解它的原因,但我無法真正想出一個解決方案。什麼是這個功能的正確規範?