2014-12-25 2 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) явно, это сделает то же самое.

Смежные вопросы