如何在Swift中声明和使用C联合类型?
我试过了:
var value: union {
var output: CLongLong
var input: [CInt]
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
更新:我想使用union将a分割8 bytes number为2 x 4 bytes number.
Eri*_*sui 16
作为Apple Swift文档,Enumerations可以做类似的事情.
可替换地,
enumeration部件可以指定任何类型的相关联的值与每个不同的部件值一起存储,多达unions或variants其他语言做.您可以将一组公共相关成员定义为一个枚举的一部分,每个枚举都有一组与其关联的适当类型的不同值.
1)如果你只想将一个8字节的数字拆分为2 x 4字节的数字,正如你可能已经知道的那样,Swift 的Bitwise操作可能有所帮助.就像
let bigNum: UInt64 = 0x000000700000008 //
let rightNum = (bigNum & 0xFFFFFFFF) // output 8
let leftNum = (bigNum >> 32) // output 7
Run Code Online (Sandbox Code Playgroud)
2)如果你想模拟union像C语言这样的行为,我尝试了这样的方法.虽然它有效但看起来很糟糕.
enum Number {
case a(Int)
case b(Double)
var a:Int{
switch(self)
{
case .a(let intval): return intval
case .b(let doubleValue): return Int(doubleValue)
}
}
var b:Double{
switch(self)
{
case .a(let intval): return Double(intval)
case .b(let doubleValue): return doubleValue
}
}
}
let num = Number.b(5.078)
println(num.a) // output 5
println(num.b) // output 5.078
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7066 次 |
| 最近记录: |