我有一个数组Person
的对象:
class Person {
let name:String
let position:Int
}
数组是:
let myArray = [p1,p1,p3]
我想要地图myArray
成为一本词典[position:name]
经典的解决方案是:
var myDictionary = [Int:String]()
for person in myArray {
myDictionary[person.position] = person.name
}
Swift 是否有任何优雅的方法可以通过函数式方法来做到这一点map
, flatMap
...或其他现代 Swift 风格
Since Swift 4
您可以使用 @Tj3n 的方法更干净、更有效地执行into
的版本reduce
它摆脱了临时字典和返回值,因此更快、更容易阅读。
示例代码设置:
struct Person {
let name: String
let position: Int
}
let myArray = [Person(name:"h", position: 0), Person(name:"b", position:4), Person(name:"c", position:2)]
Into
参数传递结果类型的空字典:
let myDict = myArray.reduce(into: [Int: String]()) {
$0[$1.position] = $1.name
}
直接返回传入类型的字典into
:
print(myDict) // [2: "c", 0: "h", 4: "b"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)