为什么将未命名的函数作为变换传递给数组会在最远的抽象中在操场中向迭代计数添加一个

Log*_*gan 5 swift

我正在根据Swift编程指南中的示例,将未命名的函数作为参数传递,并且我正在使用它来练习.

所以我们有一个Ints 数组:

var numbers: Int[] = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

我应用这样的变换:(7)

func transformNumber(number: Int) -> Int {
    let result = number * 3
    return result
}

numbers = numbers.map(transformNumber)
Run Code Online (Sandbox Code Playgroud)

等于:(7)

numbers = numbers.map({(number: Int) -> Int in
    let result = number * 3
    return result;
    })
Run Code Online (Sandbox Code Playgroud)

等于:(8)

numbers = numbers.map({number in number * 3})
Run Code Online (Sandbox Code Playgroud)

等于:(8)

numbers = numbers.map({$0 * 3})
Run Code Online (Sandbox Code Playgroud)

等于:(8)

numbers = numbers.map() {$0 * 3}
Run Code Online (Sandbox Code Playgroud)

正如您在下图中所看到的,操场侧栏中的迭代计数显示,在函数声明的最远抽象中,它具有8个计数.

在此输入图像描述

为什么它显示为最后两个示例的8次迭代?

Dav*_*ong 4

实际上,它并没有显示 8 次迭代。它显示该行执行了 8 件事。作为函数的一部分,有 7 次执行map,第 8 次执行返回到numbers变量中。

看起来这可能可以提供更有用的诊断。我强烈鼓励您通过https://bugreport.apple.com提供反馈。