1
如果你定義一個類型指定和使用不同類型的參數,它會顯示類似的錯誤:類型化列表類型指定從未打破了合同
binary() ... breaks the contract ... boolean()
例如,這類型指定:
@spec check?(binary) :: boolean
但它似乎不起作用的類型列表,或者至少,它不會顯示警告,如果我有一個方法接收一個字符串列表,我會定義此類型的字符串:
@spec check?([String.t]) :: boolean
我就可以定義列表中的任何規範,它永遠不會抱怨運行時透析器,即:
@spec check?(list(boolean)) :: boolean
@spec check?(list(Conn)) :: boolean
@spec check?(list(number)) :: boolean
@spec check?(list(integer)) :: boolean
是故意的嗎?它看起來像如果我與任何類型的[any()]
定義的列表是否有其他的方式來實現這一目標?