Swift:使用不同整数时的错误

时间:2014-06-04 22:00:02

标签: ios cocoa swift

我一直在尝试Swift,因为它显然是Apple希望我们进入的方向。 但是,我真的很恼火,你似乎无法添加不同大小的整数:

    var a: Int64 = 1500
    var b: Int32 = 12349

    var c = a + b
    if a < b { ... }

产生的错误是&#34;无法找到&#39; +&#39;接受提供的参数&#39; - 显然,因为它们是对象类型。没有任何类方法似乎对上/下转换整数有任何帮助。

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

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

如何解决这个问题?使用 as 运算符进行显式投射似乎不起作用。 Swift语言书也没有多大帮助,因为它没有真正讨论这种情况。

2 个答案:

答案 0 :(得分:7)

Swift语言书确实在“数字类型转换”一章中讨论了这个场景:

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

由于添加的两侧现在都是UInt16类型,因此允许添加。输出常量(twoThousandAndOne)被推断为UInt16类型,因为它是两个UInt16值的总和。

答案 1 :(得分:7)

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