1
入力がさまざまなフォーマットを持つことができるString
パーサで作業していますが、どのフォーマットが使用されているかわからないので、柔軟なものを書く必要があります。異なるフォーマットのスウィートパースストリング
最初のステップは、私が例えばを使用していることを確認することができ、最初の数文字をチェックすることです:
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ステートメントなどを使用していますか?これにenumを使用できますか?
EDIT:コードはString
内にあります。ここで
有望に見えること。残念ながら、最初の 'func'のコンパイラエラーが発生しました:' Member operator '〜=' 'String';型の引数が少なくとも1つ必要です; '' func'に 'static'キーワードを追加する必要がありました。私は、 'String'拡張子に解析コードを持っています。そのエラーを引き起こす可能性がありますか? – Koen
私は意図的に '〜= '演算子を汎用にしました。だから、どの型にも当てはまります。この場合、フリースタンディング機能でなければなりません。もしあなたが本当に 'String'拡張でそれを保持したいのであれば、それを一般的な' T'ではなく 'String'をとるように特殊化することができますが、これに対しては助言します。 – Alexander
私はそれを変更し、今は(私は 'parse2'を使用しています)動作します。 – Koen