为什么max在Swift中的CGFloat扩展中不起作用?

ski*_*tle 6 swift swift2

任何人都知道这不起作用(静态成员min不能在扩展名中的Type CGFloat.的实例上使用.

extension CGFloat {
    mutating func normalize() {
        self = min(max(CGFloat(0), self), CGFloat(1))
   }
}
Run Code Online (Sandbox Code Playgroud)

这虽然有效

let f: CGFloat = CGFloat(0.4)
let maxValue = max(f, 1)
Run Code Online (Sandbox Code Playgroud)

uta*_*hak 14

您可以通过指定Swift.min和Swift.max来实现此目的:

extension CGFloat {
    mutating func normalize() {
        self = Swift.min( Swift.max(CGFloat(0), self), CGFloat(1))
    }
}
Run Code Online (Sandbox Code Playgroud)

当使用min和max时,不确定你的意思是CGFloat.min还是Swift.min