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

时间:2015-12-20 09:41:23

标签: swift

我想让函数参数可选,所以当我调用函数时,我不必总是拥有所有三个参数,例如:

func doSomething(name: String, age: String, gender: String?)

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

doSomething(name: "Dave", age: 25, gender: "Male")

或省略性别,然后致电:

doSomething(name: "Dave", age: 25)

但是当我这样做时,它会告诉我它意外地发现没有,或者说有一个缺失的参数,我怎样才能做出性别'输入可选吗?

2 个答案:

答案 0 :(得分:6)

只需给它一个默认值。

func doSomething(name: String, age: String, gender: String? = "Male")

func doSomething(name: String, age: String, gender: String? = nil)

引自the Docs

  

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

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

答案 1 :(得分:1)

另一种选择是执行类似指定的初始化程序模式,如下所示:

class Person {

    func doSomething(name: String, age: String, gender: String?) {
        // do something with these informations
    }

    func doSomething(name: String, age: String) {
        self.doSomething(name, age: age, gender: nil)
    }

}

然后你可以省略最后一个参数,因为你的方法在返回

中调用指定的方法