如何在元组中添加一种Void?

时间:2017-11-01 11:08:27

标签: swift tuples

我在为元组集合声明类型Void时遇到了一些麻烦。 我收到错误:Nil is not compatible with expected element type 'Void '

var messages: [(person: String, type: String, text: String, action: Void, isSender: Bool)]? = [
    (person: "Buddy", type: "instruction", text: "Wat vervelend van uw schade. De volgende vragen moeten direct op locatie ingevuld worden", action: nil,  isSender: false),
    (person: "User", type: "question", text: "Wat is uw locatie en tijd?", action: askPermissionForGPS(), isSender: true)
]

我已经尝试在字典集合之前放置lazy以及声明类型VoidVoid -> ()() -> Void的不同方法,但没有结果。

我想要的是元组可以有一个函数作为参数或nil。

2 个答案:

答案 0 :(得分:5)

如果您想使用nil,则必须将action参数声明为可选

var messages: [(person: String, type: String, text: String, action: Void?, isSender: Bool)]? = [ ...

但我建议将action参数声明为闭包

var messages: [(person: String, type: String, text: String, action: (()->Void)?, isSender: Bool)]? = [ ...

然后你可以只传递函数名称

 (person: "User", 
    type: "question", 
    text: "Wat is uw locatie en tijd?", 
  action: askPermissionForGPS, 
isSender: true)

答案 1 :(得分:2)

对于0元素元组,

Voidtypealias。我假设您希望将操作类型设置为关闭,例如。 () -> ()。然后,如果它可以nil - 将其设为可选:(() ->())?