【发布时间】:2016-08-30 07:00:29
【问题描述】:
对于我的默认参数我应该写
func myFunc(optionA: Int? = 0)
或
func myFunc(optionA: Int! = 0)
哪个更可取和/或更重要的是哪个在生产中使用得更多?如果我使用Int! 而不是Int? 会发生什么?我是否仍然可以传递Int、nil 或不传递参数,而不必在访问时解开参数?这样做是否被认为是惰性编程并且可能会带来潜在的内存不安全性?
【问题讨论】:
-
0 不为零。目前尚不清楚您的问题是什么。您认为
Int!案例的好处是什么?如果它有默认值,为什么不只是Int? -
如果取决于上下文。但在大多数情况下,
Int参数的最佳选择是非可选的。 -
Swift 的强类型概念建议尽可能避免使用可选项。非可选类型永远不会导致应用程序在运行时崩溃。
Int的 无值 情况可以用 0、-1(如果有效整数为正数)或NSNotFound表示,这与Int.max相同。所以你有三个选择。如果它们都不合理,则使用可选项。 -
一般来说,函数的可选参数(特别是如果它是 only 参数!)应该尽可能避免。当您传入
nil作为参数时,它只会使函数的 function 更加模棱两可。在这种情况下应该怎么做? (想想你的代码,就好像你对内部实现一无所知) -
@NoodleOfDeath 选项肯定有它们的用途,并且在正确使用时非常有用。一般来说,它们对引用类型比对值类型更有意义——因为大多数值类型都相当于
nil。例如Int有0,String有"",Array有[]等。另一方面,引用类型更有意义,因为nil表示没有引用。如果这些过程具有“失败能力”的元素,可选参数也可以用作函数的返回值。还要记住,大多数 Apple API 都是用 obj-c 编写的,其中nil可以分配给任何对象类型。
标签: swift default-value optional-parameters