我在swift中有一个带有默认参数的函数。
func test(string: String = "", middleString: String = "", endString: String = "") -> Void {
// do stuff
}
我希望传入的变量将是可选的字符串。
let string: String?
let middleString: String?
let endString: String?
如何使其在参数为nil时使用默认参数。如果不是,则使用可选参数中的值。
test(string, middleString: middleString, endString: endString)
发布于 2015-07-09 03:43:57
必须使用缺省值为nil
的可选字符串String?
作为参数类型。然后,当你调用你的函数时,你可以提供一个字符串或者省略这个参数。
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
}
在您的函数中,您必须检查每个参数是否为nil
,并将其替换为默认值。使用??
操作符可以很容易地实现这一点。
然后,您可以通过提供所有参数、不提供参数或只提供要包含的参数来调用函数:
test(string: "foo", middleString: "bar", endString: "baz")
test()
test(string: "hello", endString: "world")
发布于 2015-07-09 03:40:48
试试这个:
test(string: string ?? "", middleString: middleString ?? "", endString: endString ?? "")
发布于 2017-06-09 13:54:11
注意:不要将这个可选参数解释为?
,这是不同的方法。
完全可选的参数,也就是调用方法时都不要使用。
func doAddition(value1Name value1:Int = 0, value2Name value2:Int = 0, value3Name value3:Int = 0){
print(value1+value2+value3)
}
现在,所有参数都是可选添加的。你想怎么叫都行,
doAddition(value1Name: 1)
doAddition(value1Name: 1, value2Name: 2)
doAddition(value3Name: 3)
https://stackoverflow.com/questions/31301844
复制相似问题