如何在 Swift 中合并 4 个以上的数组?

Posted

技术标签:

【中文标题】如何在 Swift 中合并 4 个以上的数组?【英文标题】:How to Combine more than 4 Arrays in Swift? 【发布时间】: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 视图的主体中执行此操作,是的。 【参考方案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)")
        

 

   

【讨论】:

以上是关于如何在 Swift 中合并 4 个以上的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中连接或合并数组?

如何获取出现在 1 个以上数组中的所有值?

Swift 4 - SwiftyJson 比较数组并合并找到的值

如何在swift 4中从数组中添加标题

如何在 Swift 4 CoreData 中设置合并策略

如何在 Swift 中从数组中删除一个元素