Following is method from a library in my project
public convenience init(hueRotate: Double) {
let c = cos(hueRotate)
let s = sin(hueRotate)
let m1 = [0.213, 0.715, 0.072,
0.213, 0.715, 0.072,
0.213, 0.715, 0.072]
let m2 = [0.787, -0.715, -0.072,
-0.213, 0.285, -0.072,
-0.213, -0.715, 0.928]
let m3 = [-0.213, -0.715, 0.928,
0.143, 0.140, -0.283,
-0.787, 0.715, 0.072]
let a = { i in
m1[i] + c * m2[i] + s * m3[i]
}
self.init(values: [a(0), a(1), a(2), 0, 0,
a(3), a(4), a(5), 0, 0,
a(6), a(7), a(8), 0, 0,
0, 0, 0, 1, 0])
}
on this following part of code I am getting compiler error saying The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
let a = { i in
m1[i] + c * m2[i] + s * m3[i]
}
How to fix this?
2
Answers
Swift is having a problem with your equation being too long in the closure of var
a
. Try splitting the expression into smaller ones, like this:It should be enough to tell the compiler what
a
returns so change the declaration to