C union-Typ in Swift?

Wie kann ich erklären, und verwenden Sie eine C-union-Typ in Swift?

Habe ich versucht:

var value: union {
      var output: CLongLong
      var input: [CInt]
    }

aber es funktioniert nicht...

AKTUALISIERT: will ich mit union zu Spalten 8 bytes number 2 x 4 bytes number.

  • Es gibt keine direkte Unterstützung von Gewerkschaften in den Swift, aber Sie verwenden können, enumeration, um erreichen Ihre Anforderung.
  • Gewerkschaften sind disfavoured, die von fast jeder C und C++ coding standard kennen zu Mann, weil Sie so Häufig zum schreiben von nicht-portablen code. Wenn Sie eine Wahl in der Angelegenheit, nie mit einem union in C und in allen Fällen entpacken was auch immer Daten mit bit-wise Operatoren.
  • Ich würde nicht einverstanden mit Ihrer Prämisse. Zum Beispiel beim Empfang einer Nachricht, wobei die Nachricht kann eine beliebige von mehreren verschiedenen Formaten, ist es fast immer umgesetzt werden, da eine union von jenen Formaten, in der Regel, wo die erste, nicht-header-Feld gibt die Art der Meldung enthalten ist, in den rest der Nachricht, wo der rest der Nachricht ist definiert als die Vereinigung aller Nachrichtentypen.
  • Dies ist genau das Szenario, welches ich gedacht habe. durch die Verwendung einer union hier versuchen wir zu überlagern, die ein Speicher-layout auf einer Byte - für-Instanz, empfangen von dem Netzwerk, oder einem anderen Prozess. Die Portabilität Gefahren sind unzählige, weil der Ausrichtung, Struktur, Verpackung und endianness unterschiedlicher Architekturen auf einem anderen.
  • Es gibt bessere Möglichkeiten in solchen Situationen. In OOP-Sprachen, die Sie verwenden würden, Vererbung, jeden message-Typ, dargestellt durch eine andere Klasse, in C können Sie pseudo-Vererbung.
InformationsquelleAutor Dao Nguyen | 2015-06-21
Schreibe einen Kommentar