使用 Swift 5.2 我想创建一个函数来动态改变形状
我有一个像
import SwiftUI
struct CardView: View {
let suit : Suite
let rank : Rank
var body: some View {
getShape(suite: .heart)
.fill(Color.red) // .fill(suit.color)
.frame(width: 100, height: 100)
}
}
我想创建一个协议返回类型为 Shape 的函数,我在下面的示例中用我的自定义形状替换了泛型
func getShape(suite:Suite) -> Shape {
switch suite {
case .heart:
return Circle() // Heart()
case .diamond:
return Rectangle() // Diamond()
case .spade:
return Circle() // Heart()
case .club:
return Circle() // Club()
}
}
我不能对某些类型使用不透明类型,因为我返回不同的类型并且出现编译错误
Function declares an opaque return type, but the return statements in its body do not have matching underlying types
我也不能将它与协议类型保持原样,因为我收到错误
Protocol 'Shape' can only be used as a generic constraint because it has Self or associated type requirements
有什么办法可以优雅地实现这一目标吗?