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
我想我理解它的原因,但我无法真正想出一个解决方案。什么是这个功能的正确规范?