我想用闭包语法重构这个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
}
}
}
答案 0 :(得分:0)
您可以使用forEach
,它具有尾随闭包语法而不是普通的for ... in
循环。
此外,您不需要手动迭代这两个数组,您可以使用index(where:)
接受闭包来查找指定ID为favoriteStationId
的工作站。
favoriteStationIds.forEach{ id in
allStations[allStations.index(where: {$0.stationId == id})!].isFavorite = true
}
请记住,上面的代码假设favoriteStationIds
中的所有元素都是allStations
中存在的有效ID(如果不是这种情况,请使用索引的可选绑定而不是强制解包)。