试图在Swift中使用Flatmap和Map添加

问题描述 投票:0回答:1

我正在尝试使用Playground中的以下代码将二维数组转换为一维数组后添加:

let twoDimensionalArray = [[1, 3, 5], [2, 4, 6], [12, 15, 16]]
let oneDimensionalArray = twoDimensionalArray.flatMap { $0.map { $0 += 2 } }
print(oneDimensionalArray)

但是我收到错误:

变异运算符的左侧不可变:'$ 0'是不可变的

另外我看到在Apple Documentation中不推荐使用flatmap方法,那么我应该做些什么呢?

swift higher-order-functions flatmap
1个回答
1
投票

你几乎是对的。所有你需要的是删除=

let twoDimensionalArray = [[1, 3, 5], [2, 4, 6], [12, 15, 16]]
let oneDimensionalArray = twoDimensionalArray.flatMap { $0.map { $0 + 2 } }
print(oneDimensionalArray) // [3, 5, 7, 4, 6, 8, 14, 17, 18]

您可以通过操纵它和其他东西来应用对闭包值($0)的更改,而不是通过直接更改(即$0 += 2)。

© www.soinside.com 2019 - 2024. All rights reserved.