我在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