2016-11-29 7 views
0

同じタイトルの質問があることは知っていますが、解決策で解決できないため別の問題だと思います提供されます。関連する質問はBinary operator '/' cannot be applied to two (Int) operandsです。私はまた、オリジナルであると思われる質問を見てきました。Swift 3エラー:「2つの 'int'オペランドには2進演算子 '/'を適用できません」

しかし、私はこのエラーはのみ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

私は両方のケースでちょうど同じ値であるが、私が代わりにそのエラーを取得していますので、それは同じだろうと思いました。私は、最初の例では2つの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) 

CGFloatExpressibleByIntegerLiteral プロトコルに準拠しているのでコンパイル。文脈から、コンパイラは 74/255CGFloatにしようとし、すべての数字をCGFloat リテラル、そして/を除算演算子として解釈します。それは、デフォルトでIntとして を取られるように

var colorRGB = 74 
UIColor(red: colorRGB/255, green: 24/255, blue: 141/255, alpha: 1) 

では動作しません

は、リテラル74のためのコンテキストがありません。しかし、colorRGB/255CGFloatとする適切な除算演算子は ではありません。

あなたは正しいタイプで明示的に変数を定義する必要があります。

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分必要です) –

関連する問題