我正在适应将未命名函数作为参数传递的过程,我正在使用它来练习,基于 the Swift Programming Guide. 中的示例
所以我们有一个 Int
数组:
var numbers: Int[] = [1, 2, 3, 4, 5, 6, 7]
然后我像这样应用转换:(7)
func transformNumber(number: Int) -> Int {
let result = number * 3
return result
}
numbers = numbers.map(transformNumber)
等于:(7)
numbers = numbers.map({(number: Int) -> Int in
let result = number * 3
return result;
})
等于:(8)
numbers = numbers.map({number in number * 3})
等于:(8)
numbers = numbers.map({$0 * 3})
等于:(8)
numbers = numbers.map() {$0 * 3}
正如您在下图中看到的,playground 边栏中的迭代计数显示,在函数声明的最远抽象中,它有一个 8 计数。
问题
为什么最后两个示例显示为 8 次迭代?
最佳答案
它并没有显示 8 次迭代,真的。它显示在那条线上执行了 8 件事。作为 map
函数的一部分执行了 7 次,第 8 次将赋值返回给 numbers
变量。
看起来这可能会提供更有用的诊断。我强烈建议您通过 https://bugreport.apple.com 提供反馈.
关于swift - 为什么将未命名的函数作为转换传递给数组会在最远的抽象中为 Playground 上的迭代计数加一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24006731/