如何在swift中将两个[String]映射到一个[Record]?

时间:2014-09-27 09:59:08

标签: swift functional-programming

问题

我有两个等长的[String]数组,我希望将其映射到[Record]

Record有一个构造函数,它为记录编号(从1到n)获取id,str1str2获取来自arr1和{{1}的条目}}

如何使用功能范例快速完成此操作?

我知道我可以使用一个简单的arr2循环来做到这一点,但我想知道是否有一种实现相同功能的功能方法。

Swift Snippet

for...in

1 个答案:

答案 0 :(得分:2)

试试这个:

struct Record
{
    var id : UInt         /* record number */
    var str1 : String
    var str2 : String
    init(id: UInt, str1: String, str2: String) {
        self.id = id
        self.str1 = str1
        self.str2 = str2
    }
}

class Records
{
    var records : [Record]

    init(arr1: [String], arr2: [String])
    {
        let count = min(arr1.count, arr2.count)
        records = (0..<count).map { Record(id: UInt($0 + 1), str1: arr1[$0], str2: arr2[$0]) }
    }
}

let arr1 : [String] = ["one", "two", "three"]
let arr2 : [String] = ["uno", "dos", "tres"]

let recs = Records(arr1: arr1, arr2: arr2)