重构和简化 for 循环以增加 "Swifty"
Refactoring and simplifying for loops to be more "Swifty"
我有一个相当简单的 for 循环,我想将其重构为更“Swifty”。我确信这可以通过某种地图或其他很酷的机制来实现。如果问的不是太多的话,听听 refactoring/creating 这些背后的思考过程对我会有好处,因为这是 Swift 的一个领域,我似乎无法理解很好(我一直坚持老式的 for-loop 思维方式!)。
循环遍历字典数组以找到我们需要的字典(基于 refKey==refVal),然后它只是从基于“keyForWhatWeWant”的特定字典中提取所需的不同值:
for currentDictionary in dictionaries where currentDictionary["refKey"] == "refVal" {
if let valueWeWant = currentDictionary["keyForWhatWeWant"] {
return valueWeWant
}
}
我确实希望它通过这段代码并在找不到值时继续前进,不过,仅供参考。
您可以先使用Swift 集合方法where predicate 来查找符合您条件的词典,然后获取其关键字“keyForWhatWeWant”。 IMO for 循环方法似乎更清晰:
if let valueWeWant = dictionaries.first(where: {
[=10=]["refKey"] == "refVal" && [=10=]["keyForWhatWeWant"] != nil
})?["keyForWhatWeWant"] {
print("valueWeWant:", valueWeWant)
}
我有一个相当简单的 for 循环,我想将其重构为更“Swifty”。我确信这可以通过某种地图或其他很酷的机制来实现。如果问的不是太多的话,听听 refactoring/creating 这些背后的思考过程对我会有好处,因为这是 Swift 的一个领域,我似乎无法理解很好(我一直坚持老式的 for-loop 思维方式!)。
循环遍历字典数组以找到我们需要的字典(基于 refKey==refVal),然后它只是从基于“keyForWhatWeWant”的特定字典中提取所需的不同值:
for currentDictionary in dictionaries where currentDictionary["refKey"] == "refVal" {
if let valueWeWant = currentDictionary["keyForWhatWeWant"] {
return valueWeWant
}
}
我确实希望它通过这段代码并在找不到值时继续前进,不过,仅供参考。
您可以先使用Swift 集合方法where predicate 来查找符合您条件的词典,然后获取其关键字“keyForWhatWeWant”。 IMO for 循环方法似乎更清晰:
if let valueWeWant = dictionaries.first(where: {
[=10=]["refKey"] == "refVal" && [=10=]["keyForWhatWeWant"] != nil
})?["keyForWhatWeWant"] {
print("valueWeWant:", valueWeWant)
}