首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用协议和不同类型的泛型?

如何正确使用协议和不同类型的泛型?
EN

Stack Overflow用户
提问于 2019-12-10 19:00:13
回答 1查看 70关注 0票数 0

下面的脚本是用Swift 5编写的,我做错了一些事情来配置泛型。

基本上,它是一个带有函数的Foo协议,带有一个带有泛型类型的参数,它在FezFoz中实现,其中bar函数的类型是在类定义中定义的。通过使用associatedtype可以修复这个问题吗?

知道什么可以是什么以及如何解决它吗?我在仿制药的设置上做错什么了吗?我需要同时支持IntString

代码语言:javascript
复制
protocol Foo {
  func bar<T>(zed: T)
}

class Fez: Foo {
  private var zed: Int = 0
  func bar<Int>(zed: Int) {
    self.zed = zed            //Cannot assign value of type 'Int' to type 'Swift.Int'
  }
}

class Foz: Foo {
  private var zed: String = ""
  func bar<String>(zed: String) {
    self.zed = zed            //Cannot assign value of type 'String' to type 'Swift.String'
  }
}

非常感谢。

:希望你今天过得愉快。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 19:03:43

像这样的泛型表示调用方可以选择传递给bar的任何类型,并且实现将处理它。您的意思是,实现可以决定可以传递哪种类型,这是您建议的关联类型。

代码语言:javascript
复制
protocol Foo {
    associatedtype Zed
    func bar(zed: Zed)
}

class Fez: Foo {
  private var zed: Int = 0
  func bar(zed: Int) {
    self.zed = zed
  }
}

class Foz: Foo {
  private var zed: String = ""
  func bar(zed: String) {
    self.zed = zed
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59273750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档