【问题标题】:How to Combine more than 4 Arrays in Swift?如何在 Swift 中合并 4 个以上的数组?
【发布时间】:2021-05-29 21:51:29
【问题描述】:

我有几个单独的数组,我正在尝试组合它们。当我尝试组合超过 4 个数组时,它不会构建,只会给出错误 The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions。我已经尝试了多种不同的方式,并且确信只有当我尝试组合超过 4 个数组时才会这样做。以下是我如何组合它们:

例如,假设这些是我的数组:

var a = [1, 2, 3, 4]
var b = [4, 6, 8, 10]
var c = [2, 4, 6, 8]
var d = [3, 6, 9, 12]
var e = [1, 3, 5, 7]

然后我将它们组合起来并像这样排序:

这行得通:

(a+b+c+d).sorted { $0.name < $1.name }

但这不会导致构建失败:

(a+b+c+d+e).sorted { $0.name < $1.name }

我应该采用不同的方式来组合这些数组以支持超过 4 个的组合吗?

【问题讨论】:

  • 在哪里你在做什么?在 SwiftUI 视图的body 中,或者...?
  • 最好创建Chain5 并提交以包含在Algorithms 中。 github.com/apple/swift-algorithms/blob/main/Guides/Chain.md
  • 数字没有名字。无法重现该问题。
  • @West1 我在 SwiftUI 视图的主体中执行此操作,是的。

标签: ios arrays swift swiftui


【解决方案1】:

以下内容适用于我在 macos 11.4、xcode 12.5、target ios 14.5 和 macCatalyst 11.3 上。 向我们展示您是如何使用代码的。

import SwiftUI

@main
struct TestErrorApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
struct ContentView: View {
    var a = [1, 2, 3, 4]
    var b = [4, 6, 8, 10]
    var c = [2, 4, 6, 8]
    var d = [3, 6, 9, 12]
    var e = [1, 3, 5, 7]
    var f = [4, 6, 8, 10]
    var g = [1, 3, 5, 7]
    var h = [2, 4, 6, 8]
    
    var body: some View {
        Text("array combination").onAppear {
            let arr = (a+b+c+d+e+f+g+h).sorted { $0 < $1 }
            print("----> arr: \(arr)")
        }
}
} 

   

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2014-09-28
    相关资源
    最近更新 更多