数组在作用域中看不到我不确定SwiftUI的原因



代码:

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(")抛出了超出范围的错误,我不确定为什么这是所有应该相关的代码。

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 = ...
  • 不要强行打开第一个字符(!)。提供合适的替代方案或后备方案

相关内容

最新更新