2015-11-19 12 views

Odpowiedz

7

Dlaczego nie zmniejszyć złożoność dla kompilatora, łamiąc wyraz na dwie sub-wyrażeń?

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

Można również użyć UINT32_MAX (lub więcej "Swifty" UInt32.max lub .max) zamiast 0xFFFFFFFF celu poprawienia czytelności. Jeśli sobie przypominam, 0xFFFFFFFF jest wartością szesnastkową maksymalnej wartości niepodpisanej 32-bitowej liczby całkowitej zdefiniowanej w nagłówku <stdint.h>.

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

Myślę, że to mija się z celem (a przynajmniej pytanie, na które chciałem odpowiedzieć!): Co oznacza ten błąd kompilatora? – mydogisbox

+0

Co według Ciebie oznacza? Wyrażenie było zbyt skomplikowane dla kompilatora i upłynął limit czasu, próbując rozwiązać przeciążenie operatora '+' i '*': https://devforums.apple.com/message/1097960#1097960 – JAL

+1

Ah! Rozdzielczość przeciążenia. Rozumiem. – mydogisbox

Powiązane problemy