Arrays 使用swift 3的数组太长,太复杂,无法求解

Arrays 使用swift 3的数组太长,太复杂,无法求解,arrays,swift,Arrays,Swift,我的代码在Swift 2.2上运行良好,但在转换为Swift 3后,我有一个数组,其中输入了41个值(并非全部显示),就像一个被编译器拒绝的变量一样。我得到一个错误信息,告诉我“表达式太复杂,不能在合理的时间内解决,考虑把表达式分解成不同的子表达式”。 如何在数组中输入所有这些值,以便编译器接受它们 谢谢,另一种解决方案是创建一个元组数组,然后将它们映射到[CGPoint]。带有闭包的初始化确保代码只运行一次 let staticPos : [CGPoint] = { let positio

我的代码在Swift 2.2上运行良好,但在转换为Swift 3后,我有一个数组,其中输入了41个值(并非全部显示),就像一个被编译器拒绝的变量一样。我得到一个错误信息,告诉我“表达式太复杂,不能在合理的时间内解决,考虑把表达式分解成不同的子表达式”。 如何在数组中输入所有这些值,以便编译器接受它们


谢谢,

另一种解决方案是创建一个元组数组,然后将它们映射到
[CGPoint]
。带有闭包的初始化确保代码只运行一次

let staticPos : [CGPoint] = {
  let positions = [(523,409),(723,407),(922,401),(1122,409),(1335,401),(1542,409),(523,496),
                   (726,504),(922,489),(1132,497),(1355,489),(1552,505),(514,587),(705,595),
                   (910,587),(1122,595),(1345,587),(1551,603),(524,698),(724,689),(922,690),
                   (1122,706),(1345,690),(1551,706)]
  return positions.map{ CGPoint(x:$0.0, y:$0.1) }

}()

在Xcode 8.0和Xcode 8.1 GM seed中进行测试,编译:

let staticPos: [CGPoint] = [CGPoint(x:523,y:409),CGPoint(x:723,y:407),CGPoint(x:922,y:401),
                 CGPoint(x:1122,y:409),CGPoint(x:1335,y:401),CGPoint(x:1542,y:409),
                 CGPoint(x:523,y:496),CGPoint(x:726,y:504),CGPoint(x:922,y:489),
                 CGPoint(x:1132,y:497),CGPoint(x:1355,y:489),CGPoint(x:1552,y:505),
                 CGPoint(x:514,y:587),CGPoint(x:705,y:595),CGPoint(x:910,y:587),
                 CGPoint(x:1122,y:595),CGPoint(x:1345,y:587),CGPoint(x:1551,y:603), CGPoint(x:524,y:698),
                 CGPoint(x:724,y:689),CGPoint(x:922,y:690),
                 CGPoint(x:1122,y:706),CGPoint(x:1345,y:690),CGPoint(x:1551,y:706)]
还包括:

let staticPos1 = [
    (523,409),(723,407),(922,401),(1122,409),(1335,401),(1542,409),(523,496),
    (726,504),(922,489),(1132,497),(1355,489),(1552,505),(514,587),(705,595),
    (910,587),(1122,595),(1345,587),(1551,603),(524,698),(724,689),(922,690),
    (1122,706),(1345,690),(1551,706)
    ].map(CGPoint.init(x:y:))

创建单个CGPoint,然后将它们添加到数组中,比如
[p1,p2,p3,p4…pn]
其中
p1=CGPointMake(x:523,y=409)
?@vadian的解决方案很好(这是问题的核心;有太多的
CGPoint
重载,这会使编译器感到困惑),但我也会打开一个雷达(bugreport.apple.com)提出这个问题。这是正确的答案,但是你也可以把它分成多行。谢谢大家!OOPer给出的解决方案非常有效,允许我在几分钟内成功编译代码。添加:[CGPoint]纠正这个问题很奇怪,因为使用这个表达式仍然像以前一样复杂,但它可以工作!
let staticPos1 = [
    (523,409),(723,407),(922,401),(1122,409),(1335,401),(1542,409),(523,496),
    (726,504),(922,489),(1132,497),(1355,489),(1552,505),(514,587),(705,595),
    (910,587),(1122,595),(1345,587),(1551,603),(524,698),(724,689),(922,690),
    (1122,706),(1345,690),(1551,706)
    ].map(CGPoint.init(x:y:))