我使用Bond使用以下代码。
var string = "Location: <<LesionLoc>><br>\nQuality: <<TESTTEST>><br>"
do {
let regex = try NSRegularExpression(pattern: "<<[a-z0-9]+>>", 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: "<<", with: "").replacingOccurrences(of: ">>", with: "")
let newString = "<span class=\"span_dropdowntext\" keyword=\"\(keyword)\" style=\"color:blue;font-weight:bold;\"contenteditable=\"False\">\(keyword)</span>"
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中有办法做到这一点吗?
如果没有,关于如何使我的代码正常运行并使其尽可能干净的任何想法?
答案 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")