小编sal*_*140的帖子

协议方法中的返回类型协方差

为什么不快速支持协议中定义的方法中的返回类型协变?例如

class Base { }

class Derived : Base { }

protocol Requirement {
  var someVariable : Base { get }
}

struct MyStruct : Requirement{
 let someVariable : Derived
}
Run Code Online (Sandbox Code Playgroud)

编译器会发出MyStruct不符合协议要求的错误.据我所知,MyStruct满足了LSP的所有要求,所以我想知道为什么Swift中不允许这样做?

oop protocols covariance swift

14
推荐指数
1
解决办法
559
查看次数

标签 统计

covariance ×1

oop ×1

protocols ×1

swift ×1