在Swift 3中,当一个具有可选的功能参数时,具有以下功能的区别是什么:
func doThis(num: Int!)
和
func doThat(num: Int?)
答案 0 :(得分:5)
两者都声明num
是可选的Int
。
如果你执行Int!
,可以在函数内隐式解包。
这意味着您可以在需要普通(非可选)Int
的地方使用它。在这种情况下,如果恰好是nil
,它将会失败。
使用"适当的" Int?
编译器不允许您在需要num
的地方使用Int
,并强制您先包含支票/警卫。
Int!
构造主要用于与Objective-C代码的互操作性,其中不清楚引用类型是否是可选的。你应该在新代码中避免使用它。