我在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)