访问元组的成员

Accessing a member of a tuple

我很好奇如果某些成员具有可选类型,我如何访问元组的成员

let serverResponse: (Int, String?, String?) = (statusCode: 255, message: "Welcome", errorMessage: "Error")
print(serverResponse.message)

我收到一个错误

error: value of tuple type '(Int, String?, String?)' has no member 'message'

为此你最好使用 struct

struct Response {
  let statusCode:Int 
  let message,errorMessage:String?
}

那你可以做

let item = Response(statusCode: 255, message: "Welcome", errorMessage: "Error")
print(item.message)

但是与元组一起使用

print(serverResponse.1) // statusCode = 0 , message = 1 , errorMessage:String = 2

通过索引($0、$1 等)访问它们或扩展类型。

let serverResponse: (statusCode: Int, message: String?, errorMessage: String?) = (statusCode: 255, message: "Welcome", errorMessage: "Error")

您的代码存在问题,您定义的 (Int, String?, String?)(statusCode: Int, message: String, errorMessage: String) 是可以互换的。

如果您将变量的类型定义留空,类型推断应该会为您提供正确的类型。

let response = (statusCode: 255, message: "Welcome", errorMessage: "Error")
print(response.message)

或者,如果您想定义类型,请确保类型实际上是 (statusCode: Int, message: String, errorMessage: String)

let response: (statusCode: Int, message: String, errorMessage: String) = (statusCode: 255, message: "Welcome", errorMessage: "Error")
print(response.message)

您也可以使用元组解构语法,

let (_, message, _) = (statusCode: 255, message: "Welcome", errorMessage: "Error")
print(message)