在Swift中,是否有方法将泛型约束为一种类型或另一种类型?

在Swift中,是否有方法将泛型约束为一种类型或另一种类型?,swift,Swift,有没有一种方法可以将多个可选约束添加到泛型中?我希望我的泛型是字符串或布尔。比如: func myFunction_udict:[String:T]其中T==String | | T==Bool{ //用dict做东西 } 不能将泛型事件约束为单个类型: //错误:同一类型要求使泛型参数“T”非泛型 func myFunction_uudict:[String:T]其中T==String{ } 您可能希望对类型的函数进行一些重载: func myFunction_uuudict:[字符串:字符串

有没有一种方法可以将多个可选约束添加到泛型中?我希望我的泛型是字符串或布尔。比如:

func myFunction_udict:[String:T]其中T==String | | T==Bool{ //用dict做东西 }
不能将泛型事件约束为单个类型:

//错误:同一类型要求使泛型参数“T”非泛型 func myFunction_uudict:[String:T]其中T==String{ } 您可能希望对类型的函数进行一些重载:

func myFunction_uuudict:[字符串:字符串]{ 打印字符串 } func myFunction_uudict:[字符串:Bool]{ 打印布尔 } 让字符串=[a:b] 设bools=[a:false] MyFunctionString//打印字符串 myFunctionbools//打印Bool
不能将泛型事件约束为单个类型:

//错误:同一类型要求使泛型参数“T”非泛型 func myFunction_uudict:[String:T]其中T==String{ } 您可能希望对类型的函数进行一些重载:

func myFunction_uuudict:[字符串:字符串]{ 打印字符串 } func myFunction_uudict:[字符串:Bool]{ 打印布尔 } 让字符串=[a:b] 设bools=[a:false] MyFunctionString//打印字符串 myFunctionbools//打印Bool
您只需创建一个协议并使String和Bool符合它:

protocol StringOrBool { }
extension Bool: StringOrBool {}
extension String: StringOrBool {}

您只需创建一个协议并使String和Bool符合它:

protocol StringOrBool { }
extension Bool: StringOrBool {}
extension String: StringOrBool {}