【问题标题】:println dictionary has "Optional"println 字典有“可选”
【发布时间】:2014-09-22 17:37:55
【问题描述】:

考虑一下这个sn-p:

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]
println(interestingNumbers["Square"])

let individualScores = [75, 43, 103, 87, 12]
println(individualScores)

控制台输出:

可选([1, 4, 9, 16, 25])

[75, 43, 103, 87, 12]

为什么在字典大小写中有一个“可选”?

【问题讨论】:

  • 字典可能有某个键的值,也可能我为空。因此,它在 swift 中由 Optional 表示。这应该很容易,因为您知道密钥具有价值,您可以直接将其解包为 println(interestingNumbers["Square"]!)
  • 如果你尝试interestingNumbers["Hello"] 会怎样?

标签: swift


【解决方案1】:

为了安全起见,Swift 字典正在返回可选项。如果您尝试访问一个不存在的密钥,这将使您为零。

您还可以使用下标语法从字典中检索特定键的值。因为可以请求不存在值的键,所以字典的下标返回字典值类型的可选值。如果字典包含请求键的值,则下标返回一个可选值,其中包含该键的现有值。否则,下标返回 nil

From The Swift Programming Language

使用下标访问任何字典中的各个元素。 从字典的下标返回的值是 ValueType? — 一个可选的,具有字典的 ValueType 的基础类型

From the Swift Standard Library Reference

【讨论】:

    【解决方案2】:

    在 Swift 中,字典返回可选项,因为如果你尝试访问一个不存在的键,它可能会返回 nil

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      相关资源
      最近更新 更多