当两个版本具有相同的行为时,为啥这个 Swift 游乐场会显示不同数量的执行? [复制]

Posted

技术标签:

【中文标题】当两个版本具有相同的行为时,为啥这个 Swift 游乐场会显示不同数量的执行? [复制]【英文标题】:Why does this Swift playground show a different number of executions when both versions have the same behavior? [duplicate]当两个版本具有相同的行为时,为什么这个 Swift 游乐场会显示不同数量的执行? [复制] 【发布时间】:2017-03-02 02:52:17 【问题描述】:

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


代码如下:

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

let arr = list.map  $0 + $0 

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


print(arr)
print(mArr)

【问题讨论】:

您的代码图像对我们毫无用处。请参阅this Meta post,了解您不应将代码作为图像发布的众多原因列表。您的代码需要在问题本身中以文本形式出现并正确格式化。 没那么简单。 Xcode 没有提供很好的方法来将 Playground 的代码和结果列一起捕获为文本。新用户应该被善待,而不是轻蔑。不知何故,我能够根据“无用”的图像回答这个用户的问题。 【参考方案1】:

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

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

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

【讨论】:

以上是关于当两个版本具有相同的行为时,为啥这个 Swift 游乐场会显示不同数量的执行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

iOS swift应用程序中Core Data的奇怪行为

当具有相同术语的 HQL 选择有效时,为啥此 HQL 删除失败?

Swift - 两个具有相同公共结构的框架

当两个产品具有相同的升级代码时升级一个产品而不是另一个

为啥 == 在比较具有相同 int 值的两个对象类型变量时不起作用

当 newValue 没有分配任何内容时,为啥这个 swift 代码可以工作?