本文介绍了类型约束中的多个协议的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class MyCustomClass< T:Equatable> 

我想使用泛型类和类型约束。 {
var a:Array< T>
init(){
a = Array< T>()
}
}

这很好。但是,如果我想使用第二个协议f.e,会发生什么。

  class MyCustomClass< T:Equatable,IndexableBase> {
var a:Array< T>
init(){
a = Array< T>()
}
}

它表示初始化器失败,因为我必须使用2而不是1个参数。我不明白。

解决方案

您可以使用此解决方法

  class MyCustomClass< T:Equatable where T:IndexableBase> {
var a:Array< T>
init(){
a = Array< T>()
}
}


I want to use a generic typed class and a type constraint:

class MyCustomClass<T : Equatable> {
  var a: Array<T>
  init() {
    a = Array<T>()
  }
}

That works fine. But what happens if I want to use a second protocol, f.e.

class MyCustomClass<T : Equatable, IndexableBase> {
  var a: Array<T>
  init() {
    a = Array<T>()
  }
}

It says that the initializer fails because I have to use 2 instead of 1 argument. That I don't understand.

解决方案

you can use this workaround

class MyCustomClass<T: Equatable where T: IndexableBase > {
    var a: Array<T>
    init() {
        a = Array<T>()
    }
}

这篇关于类型约束中的多个协议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 04:01