Swift 3错误:"二进制运算符'/'不能应用于两个'int'操作数"

Fra*_*ero 0 ios swift swift3

我知道有一个问题具有相同的标题,但我认为这是一个不同的问题,因为我无法用提供的解决方案来解决它.相关问题是:二进制运算符'/'不能应用于两个(Int)操作数.我也看过应该是原版的问题.

但我得到这个错误只是尝试在UIColor函数内部使用变量:

工作

UIColor(red: 74/255, green: 24/255, blue: 141/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

不行

var colorRGB = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

所以我无法理解为什么我的错误发生了.它抛出以下错误:

二进制运算符'/'不能应用于两个'int'操作数

我认为它会是相同的,因为在两种情况下都是相同的值,但我得到的是错误.我认为在第一个例子中还有两个int值,它不会抛出该错误.

如何在函数内部使用变量?

提前致谢!

Mar*_*n R 8

UIColor构造需要四个CGFloat参数.

UIColor(red: 74/255, green: 24/255, blue: 141/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

编译因为CGFloat符合ExpressibleByIntegerLiteral 协议.从上下文中,编译器尝试创建 74/255一个CGFloat,并将所有数字解释为CGFloat 文字,并将/其解释为CGFloat除法运算符.

这不起作用

var colorRGB = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

74文字没有上下文,因此Int默认情况下将其视为文本.但没有合适的除法运算做colorRGB/255一个CGFloat.

您必须使用正确的类型显式定义变量:

var colorRGB: CGFloat = 74
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

备注:这也将编译:

var colorRGB = 74
UIColor(red: CGFloat(colorRGB/255), green: 24/255, blue: 141/255, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

但随后colorRGB/255成为整数除法并计算为零,比较Strange Swift数字类型转换.