【问题标题】:Iterating through an array only gets the first value in Swift Playground遍历数组只获得 Swift Playground 中的第一个值
【发布时间】:2015-04-14 19:29:35
【问题描述】:

我知道这是一个非常基本的问题,但它让我很难理解为什么。我有一个名称数组以及如何遍历它们以将它们全部作为单个名称,尽管当我使用 for in 循环这样做时,它只会产生名字,我的代码:

var arrayA = ["Mike", "James", "Stacey", "Steve"]
var str = String()
for array in arrayA {
    str = array 
    println(str)//Just prints steve
}

问题是它只打印 steve,我希望能够单独访问所有名称

这就是我所看到的:

【问题讨论】:

  • 只打印“Steve”?这是在游乐场吗?如果是这样,并且您正在通过 QuickLook 查看输出,则必须单击结果视图中的“所有值”按钮。

标签: arrays swift swift-playground


【解决方案1】:

如果您使用的是 Playground,则可能需要更改视图才能看到所有结果。

您需要将鼠标悬停在快速视图显示上才能找到“所有值”图标。


看起来这可能在 Xcode 7 中发生了变化 - 正如 @MikeMeyers 在 cmets 中提到的那样,您需要右键单击快速查看窗口并选择值历史记录选项。

【讨论】:

  • 如果您将鼠标悬停在快速视图显示上,您是否没有看到右上角出现两个图标?
  • 这似乎可能会随着 Xcode 7 的变化而改变。我没有看到这两个图标,而是(在一些 UI 故障中)我需要右键单击快速查看显示窗口并然后从弹出菜单中选择。
【解决方案2】:

我无法重现你所说的:

rnapier:~$ swift
Welcome to Swift version 1.2. Type :help for assistance.
  1> var arrayA = ["Mike", "James", "Stacey", "Steve"]
  2. var str = String()
  3. for array in arrayA {
  4.     str = array
  5.     println(str)//Just prints steve
  6. }
Mike
James
Stacey
Steve
arrayA: [String] = 4 values {
  [0] = "Mike"
  [1] = "James"
  [2] = "Stacey"
  [3] = "Steve"
}
str: String = "Steve"

这会打印所有值,并将str 分配给最后一个元素。这里不清楚您为什么要使用 str,但我相信它可以满足您的要求。

如果我写这个循环,我会推荐:

let arrayA = ["Mike", "James", "Stacey", "Steve"]
for elem in arrayA {
    println(elem)
}

【讨论】:

    【解决方案3】:

    您的代码运行良好 - 它遍历所有数组元素,并将它们全部打印出来。

    我注意到了一些冗余 - 它可以更简洁地重写为:

    var arrayA = ["Mike", "James", "Stacey", "Steve"]
    for element in arrayA {
        println(element)//Just prints steve
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2019-07-25
      • 2020-10-31
      • 2019-06-30
      相关资源
      最近更新 更多