2016-10-03 47 views
0

在夫特3中,当一个具有可选的函数的参数,是与什么功能之间的区别:Swift 3 - ! vs?为可选功能参数

func doThis(num: Int!) 

func doThat(num: Int?) 
+0

不是Swift专家,但不是!打开可选和?是可选的吗? – Li357

+0

在将这些内容发布到此论坛之前,您应该使用Google搜索。这不是一个非常困难的查询。可选意味着你可以期待一个零,但与!你需要传递一些处于解包状态的东西,如果通过零将会崩溃 –

+0

我的问题是关于函数声明。 – cdub

回答

5

两个声明num是一个可选Int

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

着有“适当的” Int?编译器不会让你使用num其中需要Int并迫使你首先包括支票/后卫。

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

+0

是的,这符合我观察到的行为。谢谢。 – cdub