C Union Typ in Swift?

9

Wie kann ich einen C-Union-Typ in Swift deklarieren und verwenden?

Ich habe es versucht:

%Vor%

aber es funktioniert nicht ...

AKTUALISIERT: Ich möchte mit union 8 bytes number auf 2 x 4 bytes number aufteilen.

    
Dao Nguyen 21.06.2015, 07:55
quelle

5 Antworten

11

Wie das Apple Swift-Dokument kann Enumerations ähnliche Aktionen ausführen und mehr.

  

Alternativ können enumeration -Member verknüpfte Werte von angeben   Jeder Typ, der zusammen mit jedem anderen Elementwert gespeichert werden soll    unions oder variants in anderen Sprachen. Sie können einen gemeinsamen Satz definieren   von verwandten Mitgliedern als Teil einer Aufzählung, von denen jede a   verschiedene Werte mit entsprechenden Typen verbunden.

1) Wenn Sie nur eine 8-Byte-Nummer in 2 x 4-Byte-Nummern teilen möchten, wie Sie vielleicht wissen, die Bitwise Operation von Swift könnte helfen. Genau wie

%Vor%

2) Wenn Sie das Verhalten union wie C simulieren möchten, Ich habe es so versucht. Obwohl es funktioniert, sieht es schrecklich aus.

%Vor%     
Eric Tsui 21.06.2015, 11:41
quelle
2

Nun, in Swift gibt es keine direkte Unterstützung von Gewerkschaften, aber wir können Aufzählung für unseren Zweck verwenden.

Ex -

%Vor%     
Amit89 21.06.2015 09:11
quelle
2
___ qstntxt ___

Wie kann ich einen C-Union-Typ in Swift deklarieren und verwenden?

Ich habe es versucht:

%Vor%

aber es funktioniert nicht ...

AKTUALISIERT: Ich möchte mit union union auf 2 x sizeof(VariantA) aufteilen.

    
___ answer48095061 ___

Hier definiere ich var a = VariantA(oneField: 1234567890987654321) mit zwei Membern namens a.oneField und a.variantB.memory.firstField . Wie Sie sehen können, ist a.variantB.memory.secondField unsicher, und a.variantB.memory.firstField++ mit zugehörigem Wert wird bevorzugt, obwohl es ein bisschen anders ist als a.oneField .

%Vor%     
___ answer30978403 ___

Ihre Gewerkschaft gibt nicht den Typ der Struktur an, also nehme ich an, dass Sie dies immer aus dem Kontext ableiten (Sie wissen immer, ob der Wert entweder .memory. oder addressOf ist). In diesem Fall würde ich es in zwei separate Strukturen übersetzen:

%Vor%

Wenn Sie möchten, dass die Strukturen einige gemeinsame Eigenschaften / Methoden haben, deklarieren Sie ein %code% dafür.

    
___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ tag123swift ___ Swift ist eine universelle Open-Source-Programmiersprache, die von Apple Inc. für ihre Plattformen und Linux entwickelt wurde. Verwenden Sie das Tag nur für Fragen zu Sprachfunktionen oder für Code in Swift. Verwenden Sie die Tags [ios], [osx], [watch-os], [tvos], [cocoa-touch] und [cocoa] für (sprachunabhängige) Fragen zu den Plattformen oder Frameworks. ___ tag123unions ___ Der Plural eines Schlüsselworts in der C-Familie von Sprachen zum Deklarieren eines Union-Datentyps. ___ answer30964105 ___

Wie das Apple Swift-Dokument kann Enumerations ähnliche Aktionen ausführen und mehr.

  

Alternativ können %code% -Member verknüpfte Werte von angeben   Jeder Typ, der zusammen mit jedem anderen Elementwert gespeichert werden soll    %code% oder %code% in anderen Sprachen. Sie können einen gemeinsamen Satz definieren   von verwandten Mitgliedern als Teil einer Aufzählung, von denen jede a   verschiedene Werte mit entsprechenden Typen verbunden.

1) Wenn Sie nur eine 8-Byte-Nummer in 2 x 4-Byte-Nummern teilen möchten, wie Sie vielleicht wissen, die Bitwise Operation von Swift könnte helfen. Genau wie

%Vor%

2) Wenn Sie das Verhalten %code% wie %code% simulieren möchten, Ich habe es so versucht. Obwohl es funktioniert, sieht es schrecklich aus.

%Vor%     
___ answer30962930 ___

Nun, in Swift gibt es keine direkte Unterstützung von Gewerkschaften, aber wir können Aufzählung für unseren Zweck verwenden.

Ex -

%Vor%     
___ qstnhdr ___ C Union Typ in Swift? ___
Fred Truter 29.12.2015 16:20
quelle
1

Hier definiere ich MyUnion mit zwei Membern namens f und g . Wie Sie sehen können, ist union unsicher, und enum mit zugehörigem Wert wird bevorzugt, obwohl es ein bisschen anders ist als union .

%Vor%     
Dawn Song 04.01.2018 12:12
quelle
0

Ihre Gewerkschaft gibt nicht den Typ der Struktur an, also nehme ich an, dass Sie dies immer aus dem Kontext ableiten (Sie wissen immer, ob der Wert entweder output oder input ist). In diesem Fall würde ich es in zwei separate Strukturen übersetzen:

%Vor%

Wenn Sie möchten, dass die Strukturen einige gemeinsame Eigenschaften / Methoden haben, deklarieren Sie ein protocol dafür.

    
Sulthan 22.06.2015 11:07
quelle

Tags und Links