Swift中的可选默认参数

Wil*_*Hua 20 ios swift

我在swift中有一个带默认参数的函数

func test(string: String = "", middleString: String = "", endString: String = "") -> Void {
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)

我想传入将成为可选字符串的变量

let string: String? // 
let middleString: String?
let endString: String?
Run Code Online (Sandbox Code Playgroud)

如何使参数为nil,使用默认参数.如果没有,则使用选项中的值

test(string, middleString: middleString, endString: endString)

jus*_*ela 51

您必须使用Optional strings String?作为参数类型,默认值为nil.然后,当您调用函数时,您可以提供字符串或将该参数保留.

func test(string: String? = nil, middleString: String? = nil, endString: String? = nil) -> Void {
    let s = string ?? ""
    let mS = middleString ?? ""
    let eS = endString ?? ""
    // do stuff with s, mS, and eS, which are all guaranteed to be Strings
}
Run Code Online (Sandbox Code Playgroud)

在函数内部,您必须检查每个参数nil并在那里替换为默认值.使用??操作员可以轻松完成.

然后,您可以通过提供所有参数,无参数或仅包含要包含的参数来调用函数:

test(string: "foo", middleString: "bar", endString: "baz")
test()
test(string: "hello", endString: "world")
Run Code Online (Sandbox Code Playgroud)