Swift:使用不同整数大小时出错

我一直在尝试Swift,因为这显然是苹果希望我们进入的方向。但是,我真的很烦恼,因为你似乎不能添加不同大小的整数:

var a: Int64 = 1500 var b: Int32 = 12349 var c = a + b if a < b { ... } 

产生的错误是“无法find接受提供参数的'+'的重载 – 显然是因为它们是对象types。没有一个类方法似乎对上/下转换整数有帮助。

显然,同样的情况适用于任何types别名(CInt + CLong)。

我可以看到许多现实世界的情况下,能够进行整数运算非常实用,更不用说在两个不同大小的整数上进行比较或按位运算。

如何解决这个问题? 使用as运算符进行明确的转换似乎不起作用。 Swift语言书不是很有帮助,因为它没有真正讨论这种情况。

Swift语言手册在“数字types转换”一章中讨论了这种情况:

 let twoThousand: UInt16 = 2_000 let one: UInt8 = 1 let twoThousandAndOne = twoThousand + UInt16(one) 

因为添加的两边都是UInt16types,所以允许添加。 输出常量(twoThousandAndOne)被推断为UInt16types,因为它是两个UInt16值的总和。

 let a: Int64 = 1500 let b: Int32 = 12349 let c = a + Int64(b) println("The value of c is \(c)")