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值,它不会抛出这个错误。
我可以在我的函数中使用一个变量吗?
在此先感谢!
构造函数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。
哇!很好的解释!非常感谢你!我会尽快接受答案(我需要至少10分钟才能完成) –
colorRGB必须是CGFloat类型 – azimov
var colorRGB:CGFloat = 74 – azimov