我有一个包含字符串键和整数值的简单字典。我想从字典中获取整数值并对它们执行操作。地图的理想用例。所以我尝试了以下内容:
let testDict = ["Test0":0, "Test1":1, "Test2":2]
let testValues = testDict.values // Returns a LazyMapCollection
let mapResult = testValues.map( {number in "$\(number).00"} )
print( "mapResult: \(mapResult)" )
let mapFlatResult = testValues.flatMap( {number in "$\(number).00"} )
print( "mapFlatResult: \(mapFlatResult)" )
mapResult不是我的预期。它返回了一个字典的LazyMapCollection的LazyMapCollection。但是,flatMap确实返回了我期望的字符串数组。
mapResult:LazyMapCollection,Int&gt ;, String>(_ base: Swift.LazyMapCollection, Swift.Int>(_ base:[“Test1”:1,“Test2”:2,“Test0”:0],_ transform: (功能)),_变形:(功能))
mapFlatResult:[“$ 1.00”,“$ 2.00”,“$ 0.00”]
为什么map和flatMap之间的实现有所不同?这是地图应该做的吗?
如果将LazyMapCollection转换为数组,它会按预期进行映射:
print( "mapResult2: " + String(Array(mapResult)) )
mapResult2:[“$ 1.00”,“$ 2.00”,“$ 0.00”]