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

cdu*_*dub 0 swift swift3

在Swift 3中,当一个具有可选的函数参数时,函数之间的区别是:

func doThis(num: Int!)
Run Code Online (Sandbox Code Playgroud)

和

func doThat(num: Int?) 
Run Code Online (Sandbox Code Playgroud)

Thi*_*ilo 5

两者都声明这num是可选的Int.

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

着有"正确的" Int?,编译器不会让你使用num其中一个Int是必需的,逼着你首先包括支票/后卫.

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