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.
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 sollunions
odervariants
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.
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.
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
.
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:
Wenn Sie möchten, dass die Strukturen einige gemeinsame Eigenschaften / Methoden haben, deklarieren Sie ein %code% dafür.
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%Nun, in Swift gibt es keine direkte Unterstützung von Gewerkschaften, aber wir können Aufzählung für unseren Zweck verwenden.
Ex -
%Vor% 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:
Wenn Sie möchten, dass die Strukturen einige gemeinsame Eigenschaften / Methoden haben, deklarieren Sie ein protocol
dafür.