当我将firstThing设置为默认值nil时,这将起作用,如果没有默认值nil,我会得到一个错误,即调用函数时缺少参数.

通过输入Int?,我认为它是可选的,默认值为nil,对吗?如果是这样的话,为什么没有= nil就不行呢?

func test(firstThing: Int? = nil) {
    if firstThing != nil {
        print(firstThing!)
    }
    print("done")
}
test()

推荐答案

选项和默认参数是两码事.

一个可选的变量可以是nil,就是这样.

默认参数使用default值当您忽略该参数时,该默认值的指定方式如下:func test(param: Int = 0)

如果指定的参数是可选的,则必须提供该参数,即使要传递的值是nil.如果你的函数看起来像func test(param: Int?),你不能像test()那样调用它.尽管参数是可选的,但它没有默认值.

您还可以将这两者结合起来,使用一个可选参数,其中nil是默认值,如下所示:func test(param: Int? = nil).

Swift相关问答推荐

macOS托盘应用程序中的列表显示奇怪

创建一个DeliverMacro,该DeliverMacro创建带有注入一致性的嵌入式 struct

操作员如何点逻辑非(.!)在Swift工作?

如何将EnvironmentObject从UIKit视图控制器传递到SwiftUI视图

SWIFT:使字典数组值可变

在表单中对齐文本框

在Equatable上引用运算符函数==要求Dictionary.Values符合Equatable

数组中某些元素的总和

领域异常中的相同方法:发送到实例的无法识别的 Select 器

为 ObservedObject 和 State 对象配置预览

Vapor 4 身份验证问题 [用户未通过身份验证]

在 SwiftUI 中的 ForEach 中使用 id 时如何为数组设置动画索引

如何让 UIKit 挤压你的视图,使其适合屏幕

Alamofire 会自动存储 cookie 吗?

使用 swift 运行 pod install 时出错

Swift 4 Decodable - 以枚举为键的字典

如何实现 Swift 的 Comparable 协议?

在 Swift 中将计时器标签格式化为小时:分钟:秒

如何停止 NSTimer.scheduledTimerWithTimeInterval

'类 'className' 的 NSManagedObject 必须具有有效的 NSEntityDescription.错误