Swift复合算术运算ERROR

时间:2014-08-29 13:32:05

标签: swift

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)'

当我执行上述操作时,会发生错误,这很奇怪!是否过于复杂,无法快速计算?

1 个答案:

答案 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

当然,这里没有必要使用括号,但删除它们并不能解决问题 原始表达的问题。