Ios Swift编译器无法在合理时间内对该表达式进行类型检查;尝试将表达式拆分为不同的子表达式

Ios Swift编译器无法在合理时间内对该表达式进行类型检查;尝试将表达式拆分为不同的子表达式,ios,swift,xcode,compiler-errors,swift5,Ios,Swift,Xcode,Compiler Errors,Swift5,以下是我的项目中一个库中的方法 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,

以下是我的项目中一个库中的方法

 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])
}
在下面这段代码中,我发现编译器出现错误,称编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式拆分为不同的子表达式

let a = { i in
    m1[i] + c * m2[i] + s * m3[i]
}

如何解决这个问题?

斯威夫特在var
a
的关闭过程中遇到了方程太长的问题。尝试将表达式拆分为较小的表达式,如下所示:

let a = { i in
        c * m2[i]
    }
let b = { i in
        s * m3[i]
    }

let c = { i in
        m1[i]
    }

self.init(values: [a(0) + b(0) + c(0),
                   a(1) + b(1) + c(1),
                   a(2) + b(2) + c(2),
                   0, 0,
                   a(3) + b(3) + c(3),
                   a(4) + b(4) + c(4),
                   a(5) + b(5) + c(5),
                   0, 0,
                   a(6) + b(6) + c(6),
                   a(7) + b(7) + c(7),
                   a(8) + b(8) + c(8),
                   0, 0, 0, 0, 0, 1, 0])

它应该足以告诉编译器
a
返回什么,因此将声明更改为

let a = { (i) -> Double in
    m1[i] + c * m2[i] + s * m3[i]
}

请显示一个。您好。这个问题来自pod。如何修复它?@amodkante进入pod文件并尝试编辑它。您必须解锁该文件。如果可行,我建议您也将pod目录推送到github存储库中。请尝试更新您的pod。不要更新任何播客文件