如何使函数参数可选(避免每次调用所有参数)

Dan*_*899 2 swift

我想使一个函数参数可选,所以当我调用该函数时,我并不总是需要所有三个参数,例如:

func doSomething(name: String, age: String, gender: String?)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我不想总是指定性别,所以我可以打电话:

doSomething(name: "Dave", age: 25, gender: "Male")
Run Code Online (Sandbox Code Playgroud)

或遗漏性别,只需致电:

doSomething(name: "Dave", age: 25)
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,它告诉我它意外地发现了nil,或者说有一个缺失的参数,我怎么能让'gender'输入可选?

han*_*nad 6

只需给它一个默认值.

func doSomething(name: String, age: String, gender: String? = "Male")
Run Code Online (Sandbox Code Playgroud)

要么

func doSomething(name: String, age: String, gender: String? = nil)
Run Code Online (Sandbox Code Playgroud)

引自Docs

您可以通过在该参数的类型之后为参数赋值来为函数中的任何参数定义默认值.如果定义了默认值,则可以在调用函数时省略该参数.

更新:请注意,声明一个可选类型的变量并不意味着您可以在调用该函数时省略此参数.它只是意味着此参数可以包含取决于其类型的值,或者a nil.