मैं कुछ स्विफ्ट कोड लिख रहा हूँ जहाँ मैं एक सामान्य प्रकार युक्त एक सरणी है:एप्पल स्विफ्ट: प्रकार कास्टिंग जेनेरिक्स
let _data: Array<T> = T[]()
मेरी कोड में बाद में मैंने सरणी में संग्रहीत प्रकार निर्धारित करने की जरूरत है। मैंने documentation में वर्णित प्रकार कास्टिंग तकनीक का उपयोग करने की कोशिश की (हालांकि यह जेनरिक के लिए उपयोग नहीं किया गया था)।
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
}
निम्न त्रुटि में ऊपर स्विच बयान परिणाम संकलन पर:
- 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
किसी को पता है कि कैसे मैं आदेश विशिष्ट कार्रवाई करने में अपनी वास्तविक प्रकार करने के लिए अपने सामान्य डेटा डाली कर सकते हैं?
'as? 'का उपयोग करने का प्रयास करें, लेकिन मुझे लगता है कि आपके मामले में यह एक कंपाइलर बग है ... इसकी रिपोर्ट करें! – Jack
मैंने वैकल्पिक कोशिश की लेकिन यह काम नहीं किया। मैं इसकी एक संकलक बग से सहमत हूं। यह जेनिक्स से संबंधित मुट्ठी नहीं है ... – nalyd88