Kết hợp các câu trả lời thành một tập hợp các hàm được nạp chồng (và sử dụng "**" thay vì "^^" như một số ngôn ngữ khác sử dụng - rõ ràng hơn đối với tôi):
// 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)) }
Khi sử dụng Float, bạn có thể mất độ chính xác. Nếu sử dụng các ký tự số và kết hợp số nguyên và không phải số nguyên, bạn sẽ kết thúc bằng Double theo mặc định. Cá nhân tôi thích khả năng sử dụng một biểu thức toán học thay vì một hàm như pow (a, b) vì lý do kiểu cách / dễ đọc, nhưng đó chỉ là tôi.
Bất kỳ toán tử nào gây ra lỗi pow () cũng sẽ khiến các hàm này gặp lỗi, do đó, gánh nặng của việc kiểm tra lỗi vẫn nằm ở mã sử dụng hàm nguồn. HÔN, IMHO.
Sử dụng hàm pow () gốc cho phép lấy căn bậc hai (2 ** 0,5) hoặc nghịch đảo (2 ** -3 = 1/8). Do khả năng sử dụng số mũ nghịch đảo hoặc phân số, tôi đã viết tất cả mã của mình để trả về kiểu Double mặc định của hàm pow (), loại này sẽ trả về độ chính xác cao nhất (nếu tôi nhớ đúng tài liệu). Nếu cần, điều này có thể được nhập xuống Int hoặc Float hoặc bất cứ thứ gì, có thể mất độ chính xác.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8