【问题标题】:SwiftUI - Append numbers to array using ForEachSwiftUI - 使用 ForEach 将数字附加到数组
【发布时间】:2023-03-21 15:07:01
【问题描述】:

我不知道为什么这不起作用。我正在尝试自动生成一个数字列表,最多可达“upTo”限制,但它不起作用。

我怀疑它会很明显,比如“num”不是一个数组。这个我试过了,还是不行。

func tTables(set1 : [Int], upTo: Int) -> [Int] {
        var array = set1
        
        ForEach(1 ..< upTo + 1){num in
            array.append(num)
        }

        return array
    }

请描述清楚,因为我只是一个初学者。

【问题讨论】:

  • 我不熟悉这个领域 - 但我想知道这是否更好地标记为 Swift,而不是 SwiftUI。我假设这里没有 UI 参与。

标签: arrays swift foreach append


【解决方案1】:

ForEach是一个SwiftUI视图容器,即视图,你应该使用swift for-in操作符来代替

func tTables(set1 : [Int], upTo: Int) -> [Int] {
        var array = set1
        
        for num in 1 ..< upTo + 1 {
            array.append(num)
        }

        return array
    }

【讨论】:

    【解决方案2】:

    要填充数组,您可以将序列添加为数组

    func tTables(set1 : [Int], upTo: Int) -> [Int] {
        var array = set1
        array.append(contentsOf: Array(1...upTo))
        return array
    }
    
    tTables(set1: array, upTo: 5)
    

    另一种方法是使用inout 而不是返回数组

    func tTables(set1 : inout [Int], upTo: Int) {
        set1.append(contentsOf: Array(1...upTo))
    }
    
    var array = [Int]()
    tTables(set1: &array, upTo: 5)
    

    但是如果你传递给函数的变量总是空的,你可以完全跳过这个函数,直接用一个序列初始化数组

    let array = Array(1...5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      相关资源
      最近更新 更多