ios - Swift 中的可选默认参数

标签 ios swift

我在Swift中具有默认参数的函数。

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

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

let string: String? 
let middleString: String?
let endString: String?

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

测试(字符串,middleString:middleString,endString:endString)

最佳答案

您必须使用可选字符串 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")

关于ios - Swift 中的可选默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301844/

相关文章:

iOS 11 更喜欢 LargeTitles 在方向改变后不扩展

ios - addArrangedSubview 没有动画

ios - 在 soundOAL.m 中使用 openAL 的 IOS 8.1 中的警告?

ios - Xcode 看不到通过 Cocoapods 添加的对象

ios - 在使用 Swift 的 iOS 应用程序中使用 DispatchQueue 等待数据从 Cloud Firestore 返回时遇到问题

ios - 使用 Self 作为泛型参数

ios - 通知在凌晨 12 点而不是早上 7 点发送

ios - 每次创建一个新的uiviewcontroller 还是重用一样?

swift - 简单的 tvOS UIButton 不工作

json - 如何将 String 数组转换为 Swiftyjson JSON 类型