闭包的标识符错误? |斯威夫特之旅 - 关闭

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

所以在“Swift Tour”(https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)中是关于闭合的一部分。 他们示例中的代码如下:

numbers.map({ (number: Int) -> Int in
    let result = 3 * number
    return result
})

但是当试着运行它时,会出现以下错误:“错误:使用未解析的标识符'数字'”

所以我的问题是:

  1. 什么是关闭/谁能解释这些的使用?
  2. 这个例子有什么问题(这是Swift文档的官方代码示例..)
ios swift closures identifier
1个回答
0
投票

数组numbers在前一个代码块的第12行声明。该章中显示的每个代码块都基于之前的代码块。你可以download the code as a playground

功能代码块将是:

var numbers = [20, 19, 7, 12]

numbers.map({ (number: Int) -> Int in
    let result = 3 * number
    return result
})

闭包在他们的own chapter中有更详细的描述,但总结如下:

闭包是自包含的功能块,可以在代码中传递和使用。 Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambdas。

map函数的情况下,闭包中的代码依次对数组的每个元素进行操作。它接受数组元素作为输入,并返回输出数组的元素。

您可以使用模数函数为奇数返回0

let evens = numbers.map({ (number: Int) -> Int in
    if number % 2 == 0 {
        return number
    } else {
        return 0
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.