有没有一种方法可以将一个参数类型约束为多个约束?具体来说,对象可以是协议Decodable或具有通用Decodable的Array。
像这样:
func myFunc(obj:Decodable, Array<Decodable>)
我已经尝试过使用具有多个约束的泛型来实现此目的,但是这两者都必须是协议,而Array则不需要。另外,这可能是AND约束,而不是MartinR指出的OR:
func myFunc<T where T:Decodable, T:Array<Decodable>>(obj:T)
失败是因为数组不是协议。有没有一种方法可以将参数约束为两种类型之一,其中一种不是协议?
我试图避免在运行时抛出错误的检查,我可以这样做,但对我来说似乎是一种不好的做法。
您可以在调用方法时使用if语句。然后有两种不同的方法版本(每种约束类型一种),并根据需要使用哪种约束,调用适当的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句