我有个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 } 有雨燕任何优雅的方式做到这一点与功能的办法map,flatMap......或其他现代风格的雨燕 问题来源于stack overflow
好的map不是一个很好的例子,因为它和循环一样,您可以使用reduce它,将每个对象组合起来并变成单个值:
let myDictionary = myArray.reduce(Int: String) { (dict, person) -> [Int: String] in var dict = dict dict[person.position] = person.name return dict }
//[2: "b", 3: "c", 1: "a"] 在Swift 4或更高版本中,请使用以下答案以获得更清晰的语法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。