gpt4 book ai didi

ios - 如何快速地为具有内部类型的协议(protocol)定义类型

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:54 24 4
gpt4 key购买 nike

我制定了以下协议(protocol)。它定义了一个对象,该对象可以在 startend 给定值 0-1 之间无限缩放。

protocol Scalable {
typealias ScalableType

var start:ScalableType { get }
var end:ScalableType { get }
func scale(dub:Double) -> ScalableType?
func series(count count:Int) -> [ScalableType?]
}

示例实现:

struct DoubleRange:Scalable {
typealias ScalableType = Double
let start:Double
let end:Double

var diff:Double {
return end - start
}

func scale(dub: Double) -> Double? {
return start + (dub * diff)
}
}

我想做的是找出一种方法将变量定义为属性,该属性允许任何 Scalable 其中 ScalableTypeUIColor.

这个有效:

func foo<T where T:Scalable, T.ScalableType == UIColor>(scaler:T) {}

但我想不出一个等效的方法来定义属性。正在考虑以某种方式制作包装器,但仍然无法弄清楚。

理想情况下我想要这样表达的东西(即使显然不是编译代码)

var foo:Scalable<where Self.ScalableType == UIColor>?

最佳答案

您可以将泛型放在类/结构定义上:

struct ObjectWithScalableColor<T: Scalable where T.ScalableType == UIColor> {
let scalableColor: T
}

关于ios - 如何快速地为具有内部类型的协议(protocol)定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33244093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com