Swift でサクッと Array を Dictionary に変換したくなったので書いてみた。 クロージャの引数が var にできなくて少しごちゃつくけど、 for で回すよりも綺麗な感じがする。

import Foundation

struct Person {

var number: Int
var name: String

}

let persons = [Person(number: 1, name: "John"), Person(number: 2, name: "Ken"), Person(number: 3, name: "Mike")]

let personDic = persons.reduce(Int: Person) { (result, person) in var newResult = result newResult[person.number] = person return newResult }

let thirdPerson = personDic[3] thirdPerson?.name // Mike