2016-11-29 88 views
0

我知道同一個標題有一個問題,但我認爲這是一個不同的問題,因爲我無法用解決方案解決它提供。有關的問題是: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

回答

8

構造函數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分鐘才能完成) –

相關問題