我在Swift代码中得到了这样的语句,在操场上执行时会产生一个错误:
let colors: [String: [Float]] = ["skyBlue" : [240.0/255.0, 248.0/255.0, 255.0/255.0,1.0],
"cWhite" : [250.0/255.0, 250.0/255.0, 250.0/255.0, 1.0]]
错误是:expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions
然后,我将数组元素类型更改为Double
,它工作得很好。
然而,我在问自己,为什么会发生这种情况?正如我所说的,使用Double
可以很好地工作。因此,我的猜测是,Swift试图猜测类型,因此在本例中Double
比Float
工作得更好。
发布于 2015-04-19 18:10:46
类似的问题以前也有报道过,而且(据我所知)问题是“复杂”表达式的自动类型推断。你应该向苹果公司提交一份错误报告。
它用一种颜色的字典编译,而不是用两种颜色的字典。
在这种具体情况下,您可以通过将数组中的每个数字显式转换为浮点数来绕过它:
let colors = [
"skyBlue" : [Float(240.0/255.0), Float(248.0/255.0), Float(255.0/255.0),Float(1.0)],
"cWhite" : [Float(250.0/255.0), Float(250.0/255.0), Float(250.0/255.0), Float(1.0)]
]
https://stackoverflow.com/questions/29733538
复制相似问题