函数返回有关重载运算符的错误
Posted
技术标签:
【中文标题】函数返回有关重载运算符的错误【英文标题】:Functions returns error about overloading operator 【发布时间】:2014-06-05 23:30:30 【问题描述】:当我将参数 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)
【问题讨论】:
浮点转换似乎不是问题,但如果我删除所有“/”,我会收到错误:找不到接受提供的“init”的重载论据 【参考方案1】:使用230/255.0
就可以了,因为数字的类型会在计算后确定。如果将这两个数字分配给变量(或常数),则必须在计算之前对其进行转换。所以230/255.0
没有问题。 (事实上,CGFloat
是 Double
..不是 Float
)
在UIColor
的扩展中定义AlphaLevel
枚举对我来说似乎是一个致命的错误。如果我这样做,Swift 会崩溃(尽管它应该是可能的)。总之……
您的代码中的问题是您传递给hazeColor
方法的alpha
是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())
即可。
【讨论】:
以上是关于函数返回有关重载运算符的错误的主要内容,如果未能解决你的问题,请参考以下文章