当两个版本具有相同的行为时,为什么这个Swift游乐场会显示不同数量的执行?

时间:2017-03-02 02:52:18

标签: swift

我使用map函数遍历同一个数组,是不一样的,为什么遍历的数量不一样?

playground image

以下是代码:

let list = ["1", "2", "3"]

let arr = list.map { $0 + $0 }

let mArr = list.map { str in
    return str + str
}

print(arr)
print(mArr)

1 个答案:

答案 0 :(得分:4)

map的调用计为一次执行,并且闭包内语句的每次执行都算作一次执行。

在第一种情况下,对map的调用与闭包中的语句位于同一行,因此Xcode显示该行执行的任何内容的总次数,即4次:1次执行map加上封闭内部声明的3次执行。

在第二种情况下,对map的调用与闭包中的语句位于一个单独的行上。由于对map的调用只执行一次,并且该行没有执行任何其他操作,因此Xcode会显示map返回的内容:列表["11", "22", "33"]。闭包内的语句执行3次,因此Xcode显示它执行的次数。