使用闭包重构Swift代码

时间:2017-10-27 14:18:55

标签: swift closures refactoring

我想用闭包语法重构这个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
        }
    }
}

1 个答案:

答案 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(如果不是这种情况,请使用索引的可选绑定而不是强制解包)。

相关问题