Swift 警报处理程序语法奇怪
Swift alert handler syntax odd
我的一个 Swift 代码块是一个警报弹出窗口:
func alertNewBillCreated() {
let alert = UIAlertController(title: "Success", message: "Bill created and ready to be paid", preferredStyle: UIAlertControllerStyle.Alert)
let actionOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (UIAlertAction) in
self.navigationController?.popViewControllerAnimated(true)
}
alert.addAction(actionOK)
self.presentViewController(alert, animated: true, completion: nil)
}
像这样阅读其他 SO 帖子:Writing handler for UIAlertAction
他们都给出了包含处理程序部分并明确定义的示例,例如:
UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: {(alert: UIAlertAction!) in println("Foo")
然而,在我上面的代码中,我使用 Xcode 的自动完成功能来帮助我编写警报块,我的版本在 handler
键后没有逗号。
这两个变体也有效(除了我上面的第一段代码):
let actionOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction) in
...
})
和
let actionOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { (UIAlertAction) in
...
})
这个奇怪的 Swift 语法例外规则是什么?
这不是一个错误吗?
我们不是用逗号分隔函数参数吗?
在我看来我正在调用一个函数 UIAlertAction()
并且只向它传递两个参数 - title
和 style
因为只有 2 个逗号:
UIAlertAction(__ , __ ) { ... }
或者...这...Swift 相当于 Ruby 块? (Best explanation of Ruby blocks?)
我的警报代码有效,没有损坏,以防有人好奇。
这么多规则和奇怪的语法似乎有点不一致,使得hard/harder记住Swift语法的规则并学习Swift。
希望在 Swift 4.0 之前,所有这些问题都得到解决...
也许我抱怨太多了:D
我的一个 Swift 代码块是一个警报弹出窗口:
func alertNewBillCreated() {
let alert = UIAlertController(title: "Success", message: "Bill created and ready to be paid", preferredStyle: UIAlertControllerStyle.Alert)
let actionOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (UIAlertAction) in
self.navigationController?.popViewControllerAnimated(true)
}
alert.addAction(actionOK)
self.presentViewController(alert, animated: true, completion: nil)
}
像这样阅读其他 SO 帖子:Writing handler for UIAlertAction
他们都给出了包含处理程序部分并明确定义的示例,例如:
UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: {(alert: UIAlertAction!) in println("Foo")
然而,在我上面的代码中,我使用 Xcode 的自动完成功能来帮助我编写警报块,我的版本在 handler
键后没有逗号。
这两个变体也有效(除了我上面的第一段代码):
let actionOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction) in
...
})
和
let actionOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { (UIAlertAction) in
...
})
这个奇怪的 Swift 语法例外规则是什么?
这不是一个错误吗?
我们不是用逗号分隔函数参数吗?
在我看来我正在调用一个函数 UIAlertAction()
并且只向它传递两个参数 - title
和 style
因为只有 2 个逗号:
UIAlertAction(__ , __ ) { ... }
或者...这...Swift 相当于 Ruby 块? (Best explanation of Ruby blocks?)
我的警报代码有效,没有损坏,以防有人好奇。
这么多规则和奇怪的语法似乎有点不一致,使得hard/harder记住Swift语法的规则并学习Swift。
希望在 Swift 4.0 之前,所有这些问题都得到解决...
也许我抱怨太多了:D