我想用闭包语法重构这个 Swift 代码
var station: Station!
var allStations = [Station]()
var favoriteStationIds = [Int]()
for favoriteStationId in favoriteStationIds {
for station in allStations {
if station.stationId == favoriteStationId {
station.isFavorite = true
continue
}
}
}
您可以使用
forEach
,它具有尾随闭包语法而不是正常的for ... in
循环。
此外,您不需要手动遍历两个数组,您可以使用接受闭包的index(where:)
来查找具有指定 id 的站作为 favoriteStationId
。
favoriteStationIds.forEach{ id in
allStations[allStations.index(where: {$0.stationId == id})!].isFavorite = true
}
请记住,上面的代码段假定 favoriteStationIds
中的所有元素都是allStations
中存在的有效 ID(如果不是这种情况,请对索引使用可选绑定而不是强制解包)。