1
我正在研究String
解析器,其中輸入可以有各種格式,而且我事先不知道正在使用哪種格式,所以我需要編寫一些靈活的東西。不同格式的Swift解析字符串
的第一步是檢查的前幾個字符,我可以通過使用如檢查:
func parse(input: String) -> String {
let result: String
if (input.hasPrefix("foo") {
result = doFoo(input)
}
else if (input.hasPrefix("bar") {
result = doBar(input)
}
else if (input.hasPrefix("baz") {
result = doBaz(input)
}
else {
result = doBasic(input)
}
return result
}
每doXXX()
功能都有它自己的解析代碼,而這又可以有多種選擇,如不同分隔符等
這可能很容易變成很多的if-else代碼,我想知道如果用Swift有一個更簡單的方法來做到這一點。也許使用switch-case語句,或者其他的東西?我可以使用枚舉嗎?
編輯:代碼是在String
擴展。
這看起來很有希望。不幸的是,我得到了第一個'func'的編譯器錯誤:'成員操作符'〜='必須至少有一個'String'類型的參數;'我還必須將'static'關鍵字添加到'func'中。我有一個String擴展的解析代碼,可能會導致錯誤? – Koen
我故意做了'〜='運算符通用,所以它適用於任何類型。在這種情況下,它必須是獨立的功能。如果你真的想把它保留在一個'String'擴展中,那麼你可以專注於'String'而不是通用的'T',但我建議不要這樣做。 – Alexander
我改變了,現在它工作(我正在使用'parse2')。 – Koen