多种类型约束

Steventnorris

有没有一种方法可以将一个参数类型约束为多个约束?具体来说,对象可以是协议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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章