斯威夫特3 - ! vs?可选功能参数

时间:2016-10-03 04:20:13

标签: swift swift3

在Swift 3中,当一个具有可选的功能参数时,具有以下功能的区别是什么:

func doThis(num: Int!)

func doThat(num: Int?) 

1 个答案:

答案 0 :(得分:5)

两者都声明num是可选的Int

如果你执行Int!,可以在函数内隐式解包。 这意味着您可以在需要普通(非可选)Int的地方使用它。在这种情况下,如果恰好是nil,它将会失败。

使用"适当的" Int?编译器不允许您在需要num的地方使用Int,并强制您先包含支票/警卫。

Int!构造主要用于与Objective-C代码的互操作性,其中不清楚引用类型是否是可选的。你应该在新代码中避免使用它。