我最近在学习swift,但我有一个基本问题,找不到答案

我想买点像

var a:Int = 3
var b:Int = 3 
println( pow(a,b) ) // 27

但是pow函数只能处理double number,不能处理integer,我甚至不能用double(a)或a.double()之类的方法将int转换为double...

为什么它不能提供整数的幂?它肯定会返回一个没有歧义的整数!

如果我有两个整数,我想做幂运算,我怎么能顺利地做呢?

谢谢

推荐答案

如果你愿意的话,你可以申报一个infix operator来做这件事.

// Put this at file level anywhere in your project
infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(Double(radix), Double(power)))
}

// ...
// Then you can do this...
let i = 2 ^^ 3
// ... or
println("2³ = \(2 ^^ 3)") // Prints 2³ = 8

我使用了两个插入符号,所以你仍然可以使用XOR operator.

Update for Swift 3

在Swift 3中,"魔法数字"precedenceprecedencegroups取代:

precedencegroup PowerPrecedence { higherThan: MultiplicationPrecedence }
infix operator ^^ : PowerPrecedence
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(Double(radix), Double(power)))
}

// ...
// Then you can do this...
let i2 = 2 ^^ 3
// ... or
print("2³ = \(2 ^^ 3)") // Prints 2³ = 8

Swift相关问答推荐

如何在Swift中获得与Python相同的HMAC—SHA512签名?

如何在init()中使用setter/getters?

将`@Environment`值赋给`Binding`参数

SWIFT:使字典数组值可变

同时具有每个文本的标识符的文本组的可扩展性标识符

UICollectionViewCompostionalLayout Collectionview单元格宽度在重新加载数据后未正确调整大小

MacOS 13-如何使用SwiftUI创建Message.App设置工具栏?

expose 不透明的底层类型

在SwiftUI中绘制形状的路径后填充形状

在 SwiftUI 视图中观察 UIViewRepresentable 的 @State var 变化

DispatchQueue.main.asyncAfter 等同于 Swift 中的 struct 化并发?

Swift iOS:确定贝塞尔曲线路径是否与 UIView 框架相交?

SwiftUI 从任务中安全更新状态变量

如何有条件地依赖桌面与 iOS 的系统库?

SwiftUI:调用以编程方式创建的视图的函数

从 Finder 打开文件时,SwiftUI 的应用程序(_ openFile:) 从未调用过

在 Swift 中将计时器标签格式化为小时:分钟:秒

如何在 SwiftUI 中创建带有图像的按钮?

如何在 Swift 中判断变量的类型

'类 'className' 的 NSManagedObject 必须具有有效的 NSEntityDescription.错误