Sto scrivendo un codice Swift dove ho una matrice contenente un tipo generico:di Apple Swift: Tipo Generics Casting
let _data: Array<T> = T[]()
Più tardi nel mio codice ho bisogno di determinare il tipo memorizzato nella matrice. Ho provato ad usare la tecnica di fusione del tipo descritta nello documentation (sebbene non fosse usato per i generici).
switch self._data {
case let doubleData as Array<Double>:
// Do something with doubleData
case let floatData as Array<Float>:
// Do something with floatData
default:
return nil // If the data type is unknown return nil
}
I suddetti risultati istruzione switch il seguente errore su di compilazione:
- While emitting IR SIL function @_TFC19Adder_Example___Mac6Matrix9transposeUS_7Element__fGS0_Q__FT_GSqGS0_Q___ for 'transpose' at /code.viperscience/Adder/src/Adder Library/Matrix.swift:45:3 :0: error: unable to execute command: Segmentation fault: 11 :0: error: swift frontend command failed due to signal (use -v to see invocation) Command /Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
Qualcuno sa come posso lanciare i miei dati generici al suo tipo reale al fine di adottare misure specifiche?
Provare a usare 'as?' Ma penso che nel tuo caso sia un bug del compilatore ... segnalalo! – Jack
Ho provato l'opzionale ma non ha funzionato. Sono d'accordo che probabilmente è un bug del compilatore. Non è il primo che ho visto relativo ai farmaci generici ... – nalyd88