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