当我将参数alpha分配给函数实现时,此代码显示错误无法找到' /'接受提供的参数,但如果我将alpha设置为1.0,则错误消失。
导致这种情况的原因是什么?
import Foundation
import UIKit
extension UIColor {
enum AlphaLevel :CGFloat {
case Empty = 0.0
case Low = 0.25
case Half = 0.5
case High = 0.75
case Full = 1.0
}
class func hazeColor(alpha :AlphaLevel = .Full) -> UIColor! {
return UIColor(red: 230/255.0, green: 235/255.0, blue: 245/255.0, alpha: alpha)
}
}
我正在尝试尝试过的尝试:
class func hazeColor(alpha :AlphaLevel = .Full) -> UIColor! {
return UIColor(red: Float(230)/255.0, green: Float(235)/255.0, blue: Float(245)/255.0, alpha: alpha)
}
答案 0 :(得分:1)
可以使用230/255.0
,因为数字的类型将在计算后确定。如果将两个数字分配给变量(或常量),则必须在计算之前转换它们。所以230/255.0
没有问题。 (事实上,CGFloat
是Double
..而不是Float
)
在AlphaLevel
的扩展名中定义UIColor
枚举似乎是一个致命错误。如果我这样做,Swift会崩溃(虽然它应该是可能的)。总之...
您的代码中的问题是alpha
方法中传递的hazeColor
是AlphaLevel
的枚举,而不是CGFloat
,因此类型检查失败。只需将UIColor(red: 230/255.0, green: 235/255.0, blue: 245/255.0, alpha: alpha)
修改为UIColor(red: 230/255.0, green: 235/255.0, blue: 245/255.0, alpha: alpha.toRaw())
,即可绕过。