将类或结构类型设置为参数

时间:2014-12-25 01:58:22

标签: ios swift

目前,我正在处理流数据。这是我从Obj-C移植的代码:

func readInt8() -> Int {
    var temp = Int8()
    //get value for temp
    return Int(temp)
}

func readInt64() -> Int {
    var temp = Int()
    //get value for temp
    return temp
}

func readFloat32() -> Float {
    var temp = Float32()
    //get value for temp
    return temp
}

这是我的尝试:

func read<T: SignedIntegerType>(type: T.Type) -> Int {
    //error: Missing argument for parameter 'integerLiteral' in call
    var temp = T()
    //getting value for temp requires it to be initialized
}

如何使这些功能通用?谢谢。

1 个答案:

答案 0 :(得分:0)

根据你到目前为止所做的事情:

func readInt<T: SignedIntegerType>() -> T {
    return T(0)
}

func readFloat<T: FloatingPointType>() -> T {
    return T(0)
}

var a: Double = readFloat() //0.0
var b: Int32 = readInt() //0

可能会很好。 Int(),Int8(),Float()执行与创建新变量相同的操作,并初始化为零。因此,如果你明确地写T(0),它也会这样做。