元组与字典差异

Phi*_*hil 28 ios swift

有人可以解释一下元组和字典之间存在的主要区别是什么以及何时在Swift中使用哪些?

Mid*_* MP 48

主要区别:

  • 如果需要从方法返回多个值,则可以使用元组.
  • 元组不需要像Dictionary那样的任何键值对.
  • 元组只能包含预定义数量的值,在字典中没有这样的限制.
  • 元组可以包含具有不同数据类型的不同值,而字典一次只能包含一个数据类型值
  • 元组对于从函数返回多个值特别有用.字典可以用作模型对象.

元组有两种类型:

1命名元组

在Named元组中,我们为每个元素分配单独的名称.

定义如下:

let nameAndAge = (name:"Midhun", age:7)
Run Code Online (Sandbox Code Playgroud)

访问以下值:

nameAndAge.name
nameAndAge.age
Run Code Online (Sandbox Code Playgroud)

2未命名的元组

在未命名的元组中,我们没有为它的元素指定名称.

定义如下:

let nameAndAge = ("Midhun", 7)
Run Code Online (Sandbox Code Playgroud)

访问以下值:

nameAndAge.0
nameAndAge.1
Run Code Online (Sandbox Code Playgroud)

要么

let (theName, thAge) = nameAndAge
theName
thAge
Run Code Online (Sandbox Code Playgroud)

参考:

元组

元组使您可以创建和传递值的分组.您可以使用元组将函数中的多个值作为单个复合值返回.

您可以在Swift Programming Language中查看有关Tuple的更多信息

字典

字典是存储多个相同类型值的容器.每个值都与唯一键相关联,该唯一键充当字典中该值的标识符

您可以在Swift CollectionTypes中查看有关Dictionary的更多信息


mat*_*att 7

  • 元组是完全预定义的:它只能具有您为其预定义的值的名称和数量,尽管它们可以是不同的值类型,并且它们不必具有名称.名字是文字.

  • 字典可以具有任意数量的键值对,具有一种值类型.密钥可以通过变量引用.


这是一个元组(带名字):

typealias MySillyTuple = (theInt:Int, theString:String)
Run Code Online (Sandbox Code Playgroud)

而已.有一个被调用的Int theInt,一个被调用的String theString,这正是它必须拥有的,不多也不少.并且按名称访问值的唯一方法是文字:t.theInt.如果您有一个字符串"theInt",则无法使用它来访问t.theInt.

这是一个词典:

var d = [String:String]()
Run Code Online (Sandbox Code Playgroud)

现在d可以拥有任意数量的密钥和任何密钥,从无到有.并且可以使用字符串变量指定键; 你不必事先知道钥匙是什么.并且所有值必须是字符串.

所以基本上我会说元组不像字典.字典是用于通过动态键查找的复杂野兽.元组只是一个多于一个值的值.