如何在Swift中创建一个元组数组,其中元组中的一个项是可选的?

Dou*_*ith 3 tuples swift

请使用以下代码:

var tupleArray: [(firstName: String, middleName: String?)] = []
tupleArray.append(firstName: "Bob", middleName: nil)
tupleArray.append(firstName: "Tom", middleName: "Smith") // causes an error
Run Code Online (Sandbox Code Playgroud)

我想要一个由名字和中间名组成的元组数组,中间名可以是nil或有一个值(因此,可选).但是使用上面的创建代码,第三行给了我一个错误.为什么?我该如何解决这个问题?

Mar*_*n R 11

这可能是编译器错误.如在如何创建元组数组?,您可以将类型别名定义为变通方法:

typealias NameTuple = (firstName: String, middleName: String?)

var tupleArray: [NameTuple] = []
tupleArray.append( (firstName: "Bob", middleName: nil) )
tupleArray.append( (firstName: "Tom", middleName: "Smith") )
Run Code Online (Sandbox Code Playgroud)

  • 我可能会更进一步说,如果你要使用带有命名值的元组,你也可以选择完整的struct,这样就不需要使用typealias了.`middleName`甚至可以默认为`nil`,这允许更整洁的初始化程序. (2认同)