我一直在试用Swift,因为它显然是Apple希望我们进入的方向.但是,我真的很生气,因为你似乎无法添加不同大小的整数:
var a: Int64 = 1500
var b: Int32 = 12349
var c = a + b
if a < b { ... }
Run Code Online (Sandbox Code Playgroud)
产生的错误是"无法找到接受提供的参数的'+'的重载' - 显然,因为它们是对象类型.所有类方法似乎都没有任何帮助上/下转换整数.
同样的情况适用于任何类型的别名,显然,(CInt + CLong).
我可以看到很多真实情况,能够进行整数运算非常实用,更不用说在两个不同大小的整数上进行比较或按位运算.
怎么解决这个?使用as运算符进行显式转换似乎不起作用.Swift语言书也没有多大帮助,因为它没有真正讨论这个场景.
Swift语言书确实在"数字类型转换"一章中讨论了这个场景:
let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne = twoThousand + UInt16(one)
Run Code Online (Sandbox Code Playgroud)
因为添加的两侧现在都是UInt16类型,所以允许添加.输出常量(twoThousandAndOne)被推断为UInt16类型,因为它是两个UInt16值的总和.
let a: Int64 = 1500
let b: Int32 = 12349
let c = a + Int64(b)
println("The value of c is \(c)")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9066 次 |
| 最近记录: |