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)'
Run Code Online (Sandbox Code Playgroud)
当我执行上述操作时,会发生错误,这很奇怪!对于快速计算来说,它是否过于复杂?
可以在Report Navigator的Build log中找到完整的错误消息:
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编译器来说太复杂了.我建议提交错误报告.
目前,唯一的解决方法似乎是将表达式分为两部分,例如
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
Run Code Online (Sandbox Code Playgroud)
当然,这里不需要括号,但删除它们并不能解决原始表达式的问题.
| 归档时间: |
|
| 查看次数: |
2226 次 |
| 最近记录: |