小编ufo*_*sky的帖子

Swift协议泛型为函数返回类型

我想使用通用协议类型作为函数返回类型,如下所示:

protocol P {
  associatedtype T
  func get() -> T?
  func set(v: T)
}

class C<T>: P {
  private var v: T?
  func get() -> T? {
    return v
  }
  func set(v: T) {
    self.v = v
  }
}

class Factory {
  func createC<T>() -> P<T> {
    return C<T>()
  }
}
Run Code Online (Sandbox Code Playgroud)

但是这个代码编译错误抱怨:

  1. 不能专门化非泛型类型'P'
  2. 函数签名中不使用通用参数"T"

有没有办法用Swift实现类似的功能?

generics swift

9
推荐指数
2
解决办法
4968
查看次数

标签 统计

generics ×1

swift ×1