2015-11-19 10 views
7

で解決されるにはあまりに複雑で、それは言う:スウィフト式はXcodeでプロジェクトをコンパイルするとき、私はエラーを抱えている合理的な時間

式が妥当な時間で解決されるにはあまりに複雑でした。ここ

の異なる部分式への発現を壊す考えるコードです:

static func random(min: CGFloat, max: CGFloat) -> CGFloat { 
    return CGFloat(Float(arc4random()/0xFFFFFFFF) * (max - min) + min) 
} 

答えて

7

なぜ二つのサブ式にダウン式を壊すことにより、コンパイラの複雑さを軽減しませんか?

static func random(min: CGFloat, max: CGFloat) -> CGFloat { 
    let rand = CGFloat(arc4random()/0xFFFFFFFF) 
    return (rand * (max - min) + min) 
} 

また、読みやすさを向上させるために0xFFFFFFFFの代わりにUINT32_MAX(以上 "Swifty" UInt32.maxまたは.max)を使用することができます。私が思い出したように、ヘッダーに定義されている符号なし32ビット整数の最大値の16進数の値は0xFFFFFFFFです。

#define UINT32_MAX 0xffffffff /* 4294967295U */ 
+2

これはポイント(または少なくとも私が答えたかった質問)を逃したと思います:そのコンパイラエラーはどういう意味ですか? – mydogisbox

+0

それはどういう意味ですか?式は、コンパイラにはあまりにも複雑であり、それは '+'と '*'演算子のオーバーロードを解決しようとするとタイムアウトになりました:https://devforums.apple.com/message/1097960#1097960 – JAL

+1

ああ!オーバーロードの解決。とった。 – mydogisbox

関連する問題