2014-09-27 73 views
1

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

我有[String]两个相等长度的数组,我想映射到[Record]

Record具有用于从arr1arr2条目的构造这需要一个id备案数目(从1到n),以及str1str2

我该如何在swift中使用功能范例来做到这一点?

我知道我可以使用简单的for...in循环来做到这一点,但我想知道是否有一种功能完成相同的功能。

斯威夫特片段

struct Record 
{ 
    var id : UInt   /* record number */ 
    var str1 : String 
    var str2 : String 
} 

class Records 
{ 
    var records : [Records] 

    init() 
    { 
    var arr1 : [String] 
    var arr2 : [String] 
    /* assume arr1 and arr2 initialised to equal length arrays */ 
    records = ??? /* using functional paradigm, build using arr1, arr2 */ 
    } 
} 

回答

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) 
+0

感谢在'地图提醒我一下'$ 0'(序列,变换)'。 – Jeff 2015-02-09 01:23:11

+0

或者你可以压缩两个数组并映射到结果数组的'(String,String)'元组。 – user28434 2017-05-15 08:11:40

相关问题