一种可能的解决方法是将表达式分解为不同的子表达式,并确保每个子表达式都具有明确的类型。例如,考虑以下代码:
let sum = (a: Int, b: Int) -> Int {
return a + b
}
let result = sum(10, 20) * 3 + 5
这里编译器可能会提示'The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions?”的错误信息,因为表达式(sum(10, 20) * 3 + 5)
太复杂了。为了解决这个问题,我们可以将它分解为两个子表达式,如下所示:
let temp = sum(10, 20) * 3
let result = temp + 5
现在编译器可以更容易地对每个子表达式执行类型检查了,这样就可以避免错误信息了。