使用闭包重构 Swift 代码



我想用闭包语法重构这个 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(如果不是这种情况,请对索引使用可选绑定而不是强制解包)。

最新更新