generics函数和属性,以Equatable和Printable作为Swift中的参数

如何编写一个函数,允许任何对象,但必须在Swift中可PrintableEquatable对象数组?

 class func withItems(items: [AnyObject]){ } 
  1. 我需要项目可PrintableEquatable
  2. 我需要将items数组声明为我的类的属性

谢谢

您可以使用通用约束来在一个函数中要求两个协议:

 class func withItems<T: AnyObject where T: Equatable, T: Printable>(items: [T]) { // ... } 

因为Equatable不能用作types,所以要求存储的属性更复杂。 为了做到这一点,你基本上需要使这个类本身是通用的。 你可能会更好的声明items作为一个AnyObject的数组,并提供像这样的通用方法访问它。