【问题标题】:Array not being seen in scope Im not sure why SwiftUI在范围内看不到数组我不确定为什么 SwiftUI
【发布时间】:2021-11-01 04:55:25
【问题描述】:

代码:

extension Array {
    // Total Together An Array
    func FindTotal(_ arrayName: [Int]) -> Int {
        var currentValue: Int = 0
        for i in 0...Int(arrayName.count - 1) {
            currentValue = currentValue + Int(arrayName[i])
        }
        return currentValue
    }
    
    // Number Grabber for Calculating the values
    func calcItemsD(_ TargetArray: [String]) {
        var placeholder: String? = nil
        for i in 0...Int(TargetArray.count - 1)  {
            placeholder = String((TargetArray[i]).character(at: 0)!)
            if (placeholder == "1") {
                dealerNums.append("")
            }
        }
    }
}

class DeckSetup :  ObservableObject {
    @Published public var deckOCards: [String] = []
    @Published public var yourhand: [String] = []
    @Published public var dealerHand: [String] = []
    @Published public var dealerNums: [Int] = [7, 2]
    @Published public var playerNums: [Int] = []
}

dealerNums.append("") 抛出超出范围的错误,我不确定为什么这里有所有应该相关的代码。

【问题讨论】:

  • 您可以使用内置函数 reduce 代替 FindTotal 并且 calcItemsD 应该移动到 DeckSetup

标签: arrays swift swiftui


【解决方案1】:

dealerNums 是封装在DeckSetup 类中的数组。您无法通过 Array 扩展访问它。

你可以做的是,将dealerNums 传入函数中,如下所示:

func calcItemsD(_ targetArray: [String], dealerNums: inout [Int]) {
    var placeholder: String? = nil
    for i in 0 ..< targetArray.count  {
        placeholder = String(targetArray[i].first!)
        if placeholder == "1" {
            dealerNums.append("")
        }
    }
}

内部你的DeckSetup类这样调用:

calcItemsD(["1", "K", "A"], dealerNums: &dealerNums)

dealerNums 被标记为 inout,因为您在函数中对其进行了变异。


我稍微清理了这个功能,但我不知道您是否还有更多功能。例如,您可以更改以下更多内容来改进它:

  • 使用for target in targetArray 进行迭代,而不是使用索引。
  • placeholder 不需要存储在循环之外,因为它没有被使用。如果需要,您可以使用本地 let placeholder = ...
  • 不要强制解开 (!) 第一个字符。提供合适的替代方案或备用方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2016-05-26
    • 1970-01-01
    • 2021-09-14
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多