我知道有一个问题具有相同的标题,但我认为这是一个不同的问题,因为我无法用提供的解决方案来解决它。相关问题是:Binary operator '/' cannot be applied to two (Int) operands。我也看过应该是原版的问题。
但是我在尝试使用UIColor
函数中的变量时遇到此错误:
工作
UIColor(red: 74/255, green: 24/255, blue: 141/255, alpha: 1)
不起作用
var colorRGB = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
所以我无法理解为什么我的错误发生了。它抛出了以下错误:
二进制运算符'/'不能应用于两个'int'操作数
我认为它会是相同的,因为在两种情况下都是相同的值,但我得到了那个错误。我认为在第一个例子中还有两个int值,它不会抛出该错误。
如何在我的函数中使用变量?
提前致谢!
答案 0 :(得分:8)
UIColor
构造函数需要四个CGFloat
个参数。
UIColor(red: 74/255, green: 24/255, blue: 141/255, alpha: 1)
编译,因为CGFloat
符合ExpressibleByIntegerLiteral
协议。从编译器尝试创建的上下文
74/255
CGFloat
,并将所有数字解释为CGFloat
文字,/
作为CGFloat
除法运算符。
这不适用于
var colorRGB = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
74
字面值没有上下文,因此它被采用
默认为Int
。但没有
合适的除法运算符使colorRGB/255
成为CGFloat
。
您必须使用正确的类型明确定义变量:
var colorRGB: CGFloat = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
备注:这也可以编译:
var colorRGB = 74
UIColor(red: CGFloat(colorRGB/255), green: 24/255, blue: 141/255, alpha: 1)
但是colorRGB/255
成为整数除法并进行评估
为零,比较Strange Swift numbers type casting。