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

问题描述:

我知道同一个标题有一个问题,但我认为这是一个不同的问题,因为我无法用解决方案解决它提供。有关的问题是:Binary operator '/' cannot be applied to two (Int) operands。我也看过了应该是原文的问题。Swift 3错误:“二进制运算符'/'不能应用于两个'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) 

所以我不明白为什么我的错误发生。它抛出我下面的错误:

Binary operator '/' cannot be applied to two 'int' operands

我认为这将是相同的,因为仅仅是在两种情况下相同的价值,但我得到的是错误信息。我认为在第一个例子中,也有两个int值,它不会抛出这个错误。

我可以在我的函数中使用一个变量吗?

在此先感谢!

+1

colorRGB必须是CGFloat类型 – azimov

+1

var colorRGB:CGFloat = 74 – azimov

构造函数UIColor需要4个参数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成为整数除法并评估 为零,比较Strange Swift numbers type casting

+0

哇!很好的解释!非常感谢你!我会尽快接受答案(我需要至少10分钟才能完成) –