迅捷 3 错误:"Binary operator '/' cannot be applied to two 'int' operands"



我知道有一个带有相同标题的问题,但我认为这是一个不同的问题,因为我无法用提供的解决方案解决它。相关的问题是:二进制操作员'/'不能应用于两个(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 并评估为零,比较奇怪的迅速数字类型铸造。

相关内容

最新更新