【问题标题】:Attempting to Add Using Flatmap and Map in Swift尝试在 Swift 中使用 Flatmap 和 Map 添加
【发布时间】:2018-09-05 15:52:25
【问题描述】:

我正在尝试在 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】:

    你几乎是对的。你只需要删除=:

    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),从而对闭包中的值($0)进行更改。

    【讨论】:

    • 我喜欢你所说的“你可以通过操作它和其他东西,而不是直接更改(即 $0 += 2)来对闭包中的值 ($0) 应用更改。”因为它清楚地表明了我做错了什么。
    猜你喜欢
    • 2023-01-15
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2014-05-15
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多