#arrays #swift #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(«») выдает ошибку, выходящую за рамки, и я не уверен, почему здесь весь код, который должен быть релевантным.
Комментарии:
1. Вы можете использовать встроенную функцию
reduce
вместо FindTotal, и calcItemsD следует переместить вDeckSetup
Ответ №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: amp;dealerNums)
dealerNums
помечен inout
, так как вы изменяете его в функции.
Я немного очистил функцию, но не знаю, есть ли у вас для этого еще что-то. Например, это больше вещей, которые вы могли бы изменить, чтобы улучшить его:
- Выполните итерацию
for target in targetArray
вместо использования индекса. placeholder
не требуется хранить вне цикла, так как он не используется.let placeholder = ...
При необходимости вы можете обратиться к местному специалисту.- Не заставляйте разворачивать (
!
) первый символ. Предоставьте подходящую альтернативу или запасной вариант.