如果我有一个函数的多个子句,其类型规格为:
i)@spec foo(number):: string
ii)@spec foo(string):: number
iii)@spec foo(tuple):: string
当我用元组调用foo时(在单元测试中),它会首先尝试模式匹配条款i)和ii),然后iii)或者它会立即检查iii)因为i)和ii)显然没有静态分析。
答案 0 :(得分:3)
函数模式按源顺序匹配,因此它将从1开始,然后是2,然后是3.透析器足够聪明,知道foo({1, 2})
匹配其中一个有效的类型规范,但不会失败。