Το Swift είναι μια ισχυρή και ασφαλής γλώσσα προγραμματισμού που αναπτύχθηκε για το οικοσύστημα της Apple. Χάρη στην ασφάλεια τύπων (type safety) και τη σύγχρονη σύνταξη, είναι δυνατό να εντοπίσετε σφάλματα κατά το χρόνο μεταγλώττισης. Σε αυτό το άρθρο, θα εξετάσουμε λεπτομερώς τους βασικούς τύπους δεδομένων του Swift (Int, String, Bool κ.λπ.), τους τύπους συλλογών (Array, Dictionary, Set) και μία από τις πιο σημαντικές λειτουργίες του Swift, τα Optionals, με λεπτομερή παραδείγματα.
Βασικοί Τύποι ΔεδομένωνΣτο Swift, οι μεταβλητές ορίζονται με var και οι σταθερές με let. Δεν είναι υποχρεωτικό να καθορίσετε τον τύπο· ο μεταγλωττιστής κάνει εξαγωγή τύπου (type inference).
var yas = 30 // Εξάγεται ως τύπος Int
let isim: String = "Ahmet" // Ρητή δήλωση τύπου
var boy: Double = 1.75
var evlimi: Bool = falseΣυνηθισμένοι βασικοί τύποι:
- Int: Ακέραιος αριθμός (64-bit)
- Double: Δεκαδικός αριθμός (15 ψηφία ακρίβειας)
- Float: Δεκαδικός αριθμός (λιγότερη ακρίβεια)
- Bool: true/false
- String: Κείμενο
- Character: Ένας χαρακτήρας
Τύποι Συλλογών
- Array (Ταξινομημένα, ίδιου τύπου στοιχεία)
var meyveler: [String] = ["elma", "armut", "muz"]
meyveler.append("kiraz")
print(meyveler[1]) // armut
print(meyveler.count) // 4- Dictionary (Ζεύγη κλειδιού-τιμής)
var notlar: [String: Int] = ["Ahmet": 90, "Ayşe": 85]
notlar["Mehmet"] = 95
print(notlar["Ahmet"] ?? 0) // 90- Set (Μη επαναλαμβανόμενα, μη ταξινομημένα στοιχεία)
var renkler: Set<String> = ["kırmızı", "yeşil", "mavi"]
renkler.insert("yeşil") // Δεν προστίθεται, υπάρχει ήδη
print(renkler.contains("mavi")) // trueOptionals: Τιμές που Μπορούν να Είναι NilΣτο Swift, μια μεταβλητή ή σταθερά μπορεί να είναι nil (κενή). Αυτό δηλώνεται με optional. Έτσι, αποτρέπονται σφάλματα "nil reference" κατά το χρόνο μεταγλώττισης.
Ορισμός:
var yasString: String? = "25" // Optional String
var email: String? = nil // Μπορεί να είναι nilΧρήση Optional- Forced Unwrapping (Υποχρεωτική αποσυσκευασία – χρησιμοποιήστε με προσοχή!)
let yas = Int("25")! // Μετατρέπει το "25" σε Int, αν αποτύχει προκαλεί crash- Optional Binding (Ασφαλής μέθοδος – προτεινόμενη)
if let yas = Int("25") {
print("Yaş: \(yas)") // Χρησιμοποιείται με ασφάλεια
} else {
print("Dönüşüm başarısız")
}- Nil Coalescing Operator (?? – προεπιλεγμένη τιμή)
let isim = optionalIsim ?? "Misafir"- Guard Statement (Για πρόωρη έξοδο)
func kontrolEt(yasString: String?) {
guard let yas = Int(yasString ?? "") else {
print("Geçersiz yaş")
return
}
print("Yaşınız: \(yas)")
}struct Kisi {
var adres: Adres?
}
struct Adres {
var sehir: String
}
let kisi = Kisi()
let sehir = kisi.adres?.sehir ?? "Bilinmiyor" // Αν nil, "Bilinmiyor"Σύγκριση: Optional vs Non-Optional- Χαρακτηριστικό: Μπορεί να είναι nil; Non-Optional: Όχι; Optional (?): Ναι
- Ασφάλεια: Non-Optional: Άμεση χρήση; Optional (?): Απαιτείται ασφαλής αποσυσκευασία
- Υποχρεωτικότητα χρήσης: Non-Optional: Πάντα υπάρχει τιμή; Optional (?): Απαιτείται έλεγχος nil
- Παράδειγμα: Non-Optional: var isim: String; Optional (?): var isim: String?
Καλύτερες Πρακτικές- Χρησιμοποιήστε όσο το δυνατόν περισσότερο let και non-optional.
- Αποσυσκευάστε τα optional με if let, guard let ή nil coalescing.
- Χρησιμοποιήστε προσεκτικά optional τιμές επιστροφής σε συναρτήσεις.
- Χρησιμοποιήστε Implicitly Unwrapped Optional (ορίζεται με !) μόνο όταν είστε απόλυτα σίγουροι.
ΣυμπέρασμαΟι βασικοί τύποι δεδομένων του Swift και ειδικά ο μηχανισμός των optional κάνουν τον κώδικά σας πιο ασφαλή και αναγνώσιμο. Η σωστή χρήση των optional μειώνει σημαντικά τα runtime crashes. Αποκτήστε τη συνήθεια του optional binding από την αρχή· με τον καιρό θα νιώσετε πλήρως τα πλεονεκτήματα ασφαλείας του Swift.
Πρακτική άσκηση: Δημιουργήστε μια απλή δομή "Πληροφορίες Χρήστη" και δοκιμάστε με optional πεδία!
Περιμένω τις ερωτήσεις σας στα σχόλια.