var ret = -100.0 + (2.0 * 1.3) + (3.0 * 4.0) + (0.2 * 2.0 * 2.0) + 0.1 * 2.0 * 3.0
//output: Cannot invoke '+' with an argument list of type '($T24, $T31)'
当我执行上述操作时,会发生错误,这很奇怪!是否过于复杂,无法快速计算?
答案 0 :(得分:6)
可以在报告导航器的构建日志中找到完整的错误消息:
main.swift:15:66: error: cannot invoke '+' with an argument list of type '($T24, $T31)' var ret = -100.0 + (2.0 * 1.3) + (3.0 * 4.0) + (0.2 * 2.0 * 2.0) + 0.1 * 2.0 * 3.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ main.swift:15:66: note: expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions var ret = -100.0 + (2.0 * 1.3) + (3.0 * 4.0) + (0.2 * 2.0 * 2.0) + 0.1 * 2.0 * 3.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
所以是的,这个表达式对于当前(beta 6)Swift编译器来说太复杂了。 我建议提交错误报告。
目前,唯一的解决方法似乎是将表达式分为两部分, e.g。
var ret = -100.0 + (2.0 * 1.3) + (3.0 * 4.0)
ret += (0.2 * 2.0 * 2.0) + 0.1 * 2.0 * 3.0
当然,这里没有必要使用括号,但删除它们并不能解决问题 原始表达的问题。