快速传递数组值作为单独的参数

时间:2018-11-20 02:15:46

标签: ios swift swiftbond

我使用Bond使用以下代码。

var string = "Location: &lt;&lt;LesionLoc&gt;&gt;<br>\nQuality: &lt;&lt;TESTTEST&gt;&gt;<br>"

do {
    let regex = try NSRegularExpression(pattern: "&lt;&lt;[a-z0-9]+&gt;&gt;", options: NSRegularExpression.Options.caseInsensitive)
    for text in regex.matches(in: string, options: [], range: NSRange(location: 0, length: string.count)).reversed() {
        let keyword = (string as NSString).substring(with: text.range).replacingOccurrences(of: "&lt;&lt;", with: "").replacingOccurrences(of: "&gt;&gt;", with: "")
        let newString = "&lt;span class=\"span_dropdowntext\" keyword=\"\(keyword)\" style=\"color:blue;font-weight:bold;\"contenteditable=\"False\"&gt;\(keyword)&lt;/span&gt;"
        string = (string as NSString).replacingCharacters(in: text.range, with: newString)
    }
    print(string)
} catch {
    print(error.localizedDescription)
}

由于Bond的combineLatest(settings.userAutoRefreshInterval, config.value?.userRefreshInterval).observeNext { [weak self] _ in self?.updateAutoUserRefresh() }.dispose(in: self.bag) 不接受可选内容,因此当然会有构建错误。

我考虑过做一次combineLatest并编写两次基本相同的代码,但这确实很麻烦。

在JavaScript中,您可以将每个元素作为一个单独的参数传递到函数中。如下所示:

if let

在Swift中有办法做到这一点吗?

如果没有,关于如何使我的代码正常运行并使其尽可能干净的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以传递一个元组

func test(aTuple: (String, String, String)) {
    print(aTuple.0)
    print(aTuple.1)
    print(aTuple.2)
}

let theTuple = ("Hello", "world", "!!!")
test(aTuple: theTuple)

希望有帮助。

答案 1 :(得分:0)

如果所有参数均为同一类型,则可以使用varargs参数:

func test(_ args: String...) {
    args.forEach { print $0 }
}

然后您称呼它

test("Life", "Liberty", "Pursuit of Happiness")