在 Swift 扩展中访问具有多个参数的方法
Accessing a method with multiple paramaters in a Swift extension
我有一种方法可以将一些值标准化到可用范围内(例如,从 123-987 到 0-1)。
我想为此创建一个可重用的 CGFloat 扩展。根据下面的签名,该方法接受三个参数和 returns 一个 CGFloat。如何将其制作成 CGFloat 的扩展,以便我可以将结果存储在变量中?
func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
//
}
一个工作示例如下,但这似乎是错误的做法。
extension CGFloat {
func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
//
}
}
let float: CGFLoat = 0 // This seems needless, but I can't see another way of accessing the method
let result = float.range(position: 200, min: 123, max: 987)
关于如何正确编写这个有什么建议吗?
也许你想制作你的方法static
extension CGFloat {
static func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
//
}
}
然后你可以在 CGFloat
类型本身上调用它
let result = CGFloat.range(position: 200, min: 123, max: 987)
您可以制作 range
方法 static
然后调用它:
let result = CGFloat.range(position: 200, min: 123, max: 987)
但另一种方法是删除 position
参数并使用 self
。
extension CGFloat {
func range(min: CGFloat, max: CGFloat) -> CGFloat {
// ensure self is normalized to the range and return the updated value
}
}
let someFloat: CGFloat = 200
let result = someFloat.range(min: 123, max: 987)
我有一种方法可以将一些值标准化到可用范围内(例如,从 123-987 到 0-1)。
我想为此创建一个可重用的 CGFloat 扩展。根据下面的签名,该方法接受三个参数和 returns 一个 CGFloat。如何将其制作成 CGFloat 的扩展,以便我可以将结果存储在变量中?
func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
//
}
一个工作示例如下,但这似乎是错误的做法。
extension CGFloat {
func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
//
}
}
let float: CGFLoat = 0 // This seems needless, but I can't see another way of accessing the method
let result = float.range(position: 200, min: 123, max: 987)
关于如何正确编写这个有什么建议吗?
也许你想制作你的方法static
extension CGFloat {
static func range(position: CGFloat, min: CGFloat, max: CGFloat) -> CGFloat {
//
}
}
然后你可以在 CGFloat
类型本身上调用它
let result = CGFloat.range(position: 200, min: 123, max: 987)
您可以制作 range
方法 static
然后调用它:
let result = CGFloat.range(position: 200, min: 123, max: 987)
但另一种方法是删除 position
参数并使用 self
。
extension CGFloat {
func range(min: CGFloat, max: CGFloat) -> CGFloat {
// ensure self is normalized to the range and return the updated value
}
}
let someFloat: CGFloat = 200
let result = someFloat.range(min: 123, max: 987)