有没有办法将参数约束到多个约束?具体而言,该对象可以是Decodable协议或具有通用Decodable的Array。
所以这样:
func myFunc(obj:Decodable, Array<Decodable>)
我尝试过像这样接近它,使用具有多个约束的泛型,但它需要两者都是protocals,而Array不是。此外,这可能是AND约束,而不是MartinR指出的OR:
func myFunc<T where T:Decodable, T:Array<Decodable>>(obj:T)
失败,因为数组不是协议。有没有办法将参数约束为两种类型之一,其中一种不是协议?
我试图避免在运行时抛出错误的检查,我可以做,但对我来说似乎是不好的做法。
答案 0 :(得分:-1)
调用方法时可以使用if语句。然后有两个不同版本的方法(每种类型的约束一个),并根据您需要使用的约束,调用适当的方法。