Swift中的可选默认参数
我在swift中有一个带默认参数的函数
func test(string: String = "", middleString: String = "", endString: String = "") -> Void { // do stuff }
我想传入将成为可选字符串的变量
let string: String? // let middleString: String? let endString: String?
如何使参数为零,使用默认参数。 如果没有,则使用选项中的值
test(string, middleString: middleString, endString: endString)
你必须使用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 }
在函数内部,您必须检查每个参数是否为nil
,并在那里替换为默认值。 使用??
运算符使这很容易。
然后,您可以通过提供所有参数,无参数或仅包含要包含的参数来调用函数:
test(string: "foo", middleString: "bar", endString: "baz") test() test(string: "hello", endString: "world")
尝试这个:
test(string: string ?? "", middleString: middleString ?? "", endString: endString ?? "")
斯威夫特3
我这样写的:
test(string: String? = "", middleString: String? = "", endString: String? = "") { }
这样你可以使用或不使用参数调用test() ,如果没有提供参数,则获取默认值
注意:不要将此可选参数解释为?
,这是不同的方法。
完全可选参数,即在调用方法时甚至不使用。
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)
- 整个应用程序中的UIAccessibility默认语言
- UISearchBar解雇后resize
- 使用Swift在表视图中重新加载单元格数据
- 在GPUImage iOS中不显示文本叠加
- SKStoreReviewController — Apple在ios 10.3及更高版本中的iOS应用中请求评论和评级的方式
- 你如何使用SKTextureFilteringNearest与SKTextureAtlas
- 将数据传入和传出embedded式UIWebView
- CoreData:错误:严重的应用程序错误。 在Core Data更改处理期间捕获到exception
- 无法从Xcode 7.3.1在设备9.3.2上安装应用程序