当前位置: 首页 > 面试题库 >

Swift中的通用字典值类型

王景山
2023-03-14
问题内容

我正在尝试创建一个字典变量,其值是两种类型之一。我的尝试的一个例子应该使这一点更清楚:

var objects: <T where T: Float, T: Bool>[String: T]

这引发了仅语法功能类型可以通用的编译器错误。我想知道是否有可能,我只是不知道正确的语法?


问题答案:

为此所需的工具是带有关联数据的枚举。

enum Stuff {
  case FloatyThing(Float)
  case BoolyThing(Bool)
}

let objects = ["yes!"   : Stuff.BoolyThing(true),
               "number" : Stuff.FloatyThing(1.0)]

这样可以捕获“一个浮标或布尔对象”,并提供更好的文档记录和类型安全性。

要卸载数据,请使用switch语句:

if let something = objects["yes!"] {
  switch something {
    case .FloatyThing(let f): println("I'm a float!", f)
    case .BoolyThing(let b): println("Am I true?", b)
  }
}

使用switch语句可确保覆盖所有可能的类型,并防止您意外地将数据作为错误类型卸载。很高兴编译器可以为您提供很多帮助。

有关更多信息,请参见Swift编程语言中的“枚举和结构”。

我还推荐Alexandros Salazar撰写的Swift中的错误处理,作为一个很好的示例来说明如何使用它来处理常见问题。



 类似资料:
  • 问题内容: 我是Swift的新手,正在上课学习iOS编程。我发现自己很困惑如何在字典数组中搜索字符串值并将字符串值转储到数组中。这是从我的Xcode游乐场获取的。 我正在尝试找出方法:1)搜索字典数组2)将搜索结果转储到数组(由我创建) 这些是角色字典。 这是上面列出的字符词典的数组。 这是我要编写的功能。 对于在此方面取得进展的任何帮助,我将不胜感激。我已经为示例进行了挖掘,但是我很快就会找到一

  • 问题内容: 我习惯于Python的defaultdict的一种模式是字典,如果未显式设置给定键的值,则该字典将返回默认值。尝试在Swift中做到这一点有点冗长。 我意识到我可以创建一个做到这一点的类,但是随后必须通过属性访问实际的Dictionary才能使用其他任何普通的Dictionary方法 有更好的模式吗? 问题答案: 使用Swift 2,您可以实现类似于python版本的扩展名: 后面的闭

  • 问题内容: 我想在[String:SomeClass]类型的Dictionary中存储一个更专业的类型。这是一些说明我的问题的示例代码(也可以在https://swiftlang.ng.bluemix.net/#/repl/579756cf9966ba6275fc794a上使用): 它产生错误。 我已经尝试过强制转换,但是会产生错误。 我也尝试将Dictionary定义为type,但这也没有任何改

  • 我正试着翻阅这本字典 我想要跟踪这本字典中最大的数字,以及与这个数字对应的键的名称 下面是我的代码: 但我得到了以下类型的错误:的值 我不知道我在哪里错过了适当的迭代。请帮忙。谢谢

  • Swift 4中的字典是用于存储相同类型的无序值列表。 Swift 4进行了严格的检查,不允许在字典中输入错误的类型。 Swift 4字典使用称为键的唯一标识符来存储值,通过相同的键引用和查找值。与数组中的项目不同,字典中的项目没有指定的顺序。 当需要根据标识符(键)查找值时,可以使用字典。 字典键可以是整数,也可以是字符串,但它在字典中作为键是唯一的。 如果将创建的字典分配给变量,则它始终是可变

  • Swift 字典用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。 Swift 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。 Swift 字典的key