我在Swift中有一個枚舉。這有點像按類型快速訪問枚舉
enum LegalArgs {
case AsString(String)
case AsBool(Bool)
... etc
}
我想通過類型有條件訪問此枚舉。所以如果我有LegalArgs的實例,我可以通過T並獲得T?如果實例是那種類型的話。否則,我將不得不爲一些不同的情況重複一堆代碼。
我當前的代碼看起來有點像這樣:
String? maybeAsString(arg: LegalArgs) {
switch arg {
case .AsString(let str):
return str;
default:
return nil;
}
}
的問題是,我必須重複此功能在枚舉所有情況。
你想的'init'這需要'Any',使一個'enum'爲根據實際類型相關聯的價值?所以'LegalArgs(「你好」)'會導致'LegalArgs.AsString(「你好」)'? – Qbyte
不,反過來 - 我有LegalArgs.AsString(「你好」),我需要一個字符串?。這對於特定的成員來說很簡單,但當我需要在所有不同類型的案例中共享相同的邏輯時,這個問題會更加棘手。 – Puppy