首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift中的可选默认参数

Swift中的可选默认参数
EN

Stack Overflow用户
提问于 2015-07-09 03:22:47
回答 3查看 21.2K关注 0票数 21

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

代码语言:javascript
复制
func test(string: String = "", middleString: String = "", endString: String = "") -> Void {
  // do stuff
}

我希望传入的变量将是可选的字符串。

代码语言:javascript
复制
let string: String? 
let middleString: String?
let endString: String?

如何使其在参数为nil时使用默认参数。如果不是,则使用可选参数中的值。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-09 03:43:57

必须使用缺省值为nil的可选字符串String?作为参数类型。然后,当你调用你的函数时,你可以提供一个字符串或者省略这个参数。

代码语言:javascript
复制
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,并将其替换为默认值。使用??操作符可以很容易地实现这一点。

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

代码语言:javascript
复制
test(string: "foo", middleString: "bar", endString: "baz")
test()
test(string: "hello", endString: "world")
票数 52
EN

Stack Overflow用户

发布于 2015-07-09 03:40:48

试试这个:

代码语言:javascript
复制
 test(string: string ?? "", middleString: middleString ?? "", endString: endString ?? "")
票数 1
EN

Stack Overflow用户

发布于 2017-06-09 13:54:11

注意:不要将这个可选参数解释为?,这是不同的方法。

完全可选的参数,也就是调用方法时都不要使用。

代码语言:javascript
复制
func doAddition(value1Name value1:Int = 0, value2Name value2:Int = 0, value3Name value3:Int = 0){
    print(value1+value2+value3)
}

现在,所有参数都是可选添加的。你想怎么叫都行,

代码语言:javascript
复制
doAddition(value1Name: 1)
doAddition(value1Name: 1, value2Name: 2)
doAddition(value3Name: 3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31301844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档