2014-12-25 29 views
0

目前,我正在處理流數據。這是我的代碼的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 
} 

我怎樣才能讓這些功能的通用?謝謝。

+0

看看這個要點 - 看起來類似於你想要做的:https://gist.github.com/davepeck/495ea71f815ce292d6e0 –

回答

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),它會做同樣的事情。