如果函数调用接收到可选参数,则添加重新声明参数的可选绑定似乎按预期工作。可选绑定下的任何代码都使用新的非可选类型。
func foo(notification: NSNotification?) {
guard let notification = notification else {
return
}
... // do something with the non optional notification object
但我看到的每个例子都会检查参数是否为nil,如果不是nil,它们只是使用相同的参数变量。在我的特定示例中,我基本上将通知变量重新声明为非可选类型。这是在目标c中无法完成的事情,它给出了编译器错误。由于我不了解可选绑定的内部实现,很想知道这是否是解决此问题的方法,或者我需要使用不同的变量名。
答案 0 :(得分:1)
是的,这通常是swift推荐的模式。
通常不需要将传递的可选项强制转换为内部变量,除非您想在内部对其进行变更,并且当您想要在任何其他代码之前退出函数时,看起来您正在正确使用防护如果参数为nil,则运行。