我知道有一个带有相同标题的问题,但我认为这是一个不同的问题,因为我无法用提供的解决方案解决它。相关的问题是:二进制操作员'/'不能应用于两个(int)操作数。我还研究了应该是原始的问题。
但是我发现此错误仅尝试使用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值,并且不会丢弃该错误。
我该怎么办才能在功能中使用变量?
预先感谢!
UIColor
构造函数采用四个CGFloat
参数。
UIColor(red: 74/255, green: 24/255, blue: 141/255, alpha: 1)
编译是因为CGFloat
符合ExpressibleByIntegerLiteral
协议。从上下文中,编译器试图制作 74/255
A CGFloat
,并将所有数字解释为CGFloat
文字,/
作为CGFloat
分区操作员。
不适用于
var colorRGB = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
没有74
文字的上下文,因此默认为Int
。但是没有合适的部门操作员使colorRGB/255
A 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
变成整数division 并评估为零,比较奇怪的迅速数字类型铸造。