我有兩個 int 陣列,每個陣列有 3 個元素。如果陣列中不存在我使用 func 收到的 int 數,我將嘗試拋出錯誤
func switch(a: Int, b: Int) throws -> Void {
if a < 0 || b < 0 || a > arrayA.count || b > arrayB.count {
throw SwitchError.error
}
我正在嘗試使用 count 來執行此操作,但始終回傳陣列中不存在數字的錯誤,即使它們存在......還有其他方法可以實作這一點嗎?
class SoccerPlayer {
let name: String
let number: Int
init(name: String, number: Int) {
self.name = name
self.number = number
}
}
class Team {
var nameTeam: String
var arrayA: [SoccerPlayer] = []
var arrayB: [SoccerPlayer] = []
init(nameTeam: String, arrayA: [SoccerPlayer], arrayB: [SoccerPlayer]) {
self.nameTeam = nameTeam
self.arrayA = arrayA
self.arrayB = arrayB
}
func switch(a: Int, b: Int) throws -> Void {
if a < 0 || b < 0 || a > arrayA.count || b > arrayB.count {
throw SwitchError.error
}
}
}
uj5u.com熱心網友回復:
使用來自評論的附加資訊,看起來你有這樣的陣列:
class SoccerPlayer {
var name : String
var number : Int
//etc
}
var arrayA : [SoccerPlayer] = ...
var arrayB : [SoccerPlayer] = ...
鑒于該設定,如果您想檢查陣列是否包含number屬性匹配的元素,您可以執行以下任一操作:
func check(a: Int, b: Int) throws {
if a < 0 || b < 0 || !arrayA.map(\.number).contains(a) || !arrayB.map(\.number).contains(b) {
throw SwitchError.error
}
//etc
}
func check(a: Int, b: Int) throws {
if a < 0 || b < 0 || !arrayA.contains(where: { $0.number == a}) || !arrayB.contains(where: { $0.number == b }) {
throw SwitchError.error
}
//etc
}
第一個創建一個僅包含numbers 的新陣列并檢查它的元素——第二個檢查而不創建臨時陣列。這些在功能上是相同的,但對于更大的陣列可能具有不同的性能特征。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/431351.html
標籤:迅速
上一篇:firestore獲取子集合
下一篇:在swiftUI中計算星星
