在Swift中使用Equatable和Printable作为参数的通用函数和属性

时间:2014-12-05 15:45:08

标签: ios swift

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

class func withItems(items: [AnyObject]){

}
  1. 我需要项目为PrintableEquatable
  2. 我需要声明items数组作为我的类的属性
  3. 由于

1 个答案:

答案 0 :(得分:3)

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

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

要求存储的属性比较棘手,因为Equatable不能用作类型。为了做到这一点,你基本上需要使类本身通用。您可能最好将items声明为AnyObject数组,并通过类似这样的通用方法提供对它的访问权。