Łączenie odpowiedzi w przeładowany zestaw funkcji (i używanie „**” zamiast „^^”, jak używają niektóre inne języki - jaśniejsze dla mnie):
// http://stackoverflow.com/questions/24196689/how-to-get-the-power-of-some-integer-in-swift-language
// Put this at file level anywhere in your project
infix operator ** { associativity left precedence 160 }
func ** (radix: Double, power: Double) -> Double { return pow(radix, power) }
func ** (radix: Int, power: Int ) -> Double { return pow(Double(radix), Double(power)) }
func ** (radix: Float, power: Float ) -> Double { return pow(Double(radix), Double(power)) }
Używając Float, możesz stracić precyzję. Jeśli używasz literałów numerycznych i kombinacji liczb całkowitych i niecałkowitych, domyślnie otrzymasz Double. Osobiście lubię możliwość używania wyrażenia matematycznego zamiast funkcji takiej jak pow (a, b) ze względów stylistycznych / czytelności, ale to tylko ja.
Każdy operator, który spowodowałby, że pow () wyrzuci błąd, spowoduje również, że te funkcje będą generować błąd, więc ciężar sprawdzania błędów i tak spoczywa na kodzie używającym funkcji power. KISS, IMHO.
Użycie natywnej funkcji pow () pozwala np. Wziąć pierwiastek kwadratowy (2 ** 0,5) lub odwrotnie (2 ** -3 = 1/8). Ze względu na możliwość użycia wykładników odwrotnych lub ułamkowych napisałem cały swój kod tak, aby zwracał domyślny typ Double funkcji pow (), który powinien zwracać największą precyzję (o ile dobrze pamiętam dokumentację). W razie potrzeby można to obniżyć do typu Int, Float lub cokolwiek innego, prawdopodobnie z utratą precyzji.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8