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