• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Variablen in mehrfacher Ausführung (verschiedene Typen) wirklich nötig?

belinea

deaktivierter Benutzer
Registriert
12.07.08
Beiträge
351
Nachdem meine Kopfschmerzen, verursacht von der Typensicherheit in Swift, langsam nachlassen ist mein Sourcecode nun ein Urwald von Variablen in teilweise dreifacher Ausführung.

Grund: Will ich 3+3+3+3 rechnen und die erste Zahl ist ein Int, die zweite ein UInt32, die dritte ein Double und die vierte ein Float, so kann man sagen dass ein addieren dieser Zahlen erstmal unmöglich ist. Man muss diese Zahlen erstmal umwandeln (casten) damit sie alle vier den gleichen Datentyp haben. Das heisst ich habe nicht vier Variablen sondern dann in diesem Fall dann sieben die dann den Datentyp Float (zum Beispiel haben).

Will ich die Zahl dann mit einer bestimmter Nachkommazahl anzeigen, ist zum Schluß dann ein casten der Zahl in einen String nötig (NSString stringWithFormat).

Mache ich etwas grundlegendes falsch, oder ist es wirklich so, dass 3+3+3+3 ganz schön aufwendig werden kann?

Oder anderes Beipsiel. Um ein zufälligen Wert in einem Array anzuzeigen muss ich erst eine Zufallszahl in UInt32 erstellen und diese dann zum Schluß in Int casten.

Code:
var unsignedArrayCount = UInt32(array.count) // UInt32
var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount) // UInt32
var randomNumber = Int(unsignedRandomNumber) // Int
print(array[randomNumber])

Damit muss man leben, oder? Zufallszahlen kann man nur in UInt32 erzeugen, Arrays lassen sich nur mit Int werten adressieren.
 
Zuletzt bearbeitet:

MacBerndMUC

deaktivierter Benutzer
Registriert
23.08.15
Beiträge
7
Mache ich etwas grundlegendes falsch, oder ist es wirklich so, dass 3+3+3+3 ganz schön aufwendig werden kann?

Da machst du etwas grundsätzlich falsch. Du kannst innerhalb deiner Rechnung den Datentype ändern. Swift gibt hierbei jedoch keine Fehlermeldung aus wenn du eine Fließkommazahl in eine Ganzzahl wandelst. Die Nachkommastellen fallen sang und klanglos weg. Bei einer App die mit Geldbeträgen rechnet kannst du hier mit einem falschen Datentyp Millionenbeträge versemmeln.

Code:
var zahlInt:Int = 3
var zahlUInt32 = 3
var zahlUInt64 = 3
var zahlFloat:Float = 3.33
var zahlDouble:Double = 3.333333333

var summeInt = Int(zahlInt) + Int(zahlUInt32) + Int(zahlUInt64) + Int(zahlDouble) + Int(zahlFloat) // ACHTUNG!!!!!!!! wird auf Int gerundet
var summeFloat = Float(zahlInt) + Float(zahlUInt32) + Float(zahlUInt64) + Float(zahlDouble) + Float(zahlFloat)
var summeDouble = Double(zahlInt) + Double(zahlUInt32) + Double(zahlUInt64) + Double(zahlDouble) + Double(zahlFloat)
 
Zuletzt bearbeitet: