Swift Hile Sayfası
Son güncelleme
Hello World ve temeller
Swift üst düzeyde şablon koda ihtiyaç duymaz - tek bir satır çalışır.
| İşlem | Söz dizimi |
|---|---|
| Bir satır yazdır | print("Hello, World!") |
| Satır sonu olmadan yazdır | print("Hi", terminator: "") |
| Dize interpolasyonu | print("Hi \(name)") |
| Yorum | // this is a comment |
| Çok satırlı yorum | /* ... */ |
| Bir modülü içe aktar | import Foundation |
| Bir dosyayı çalıştır | swift run veya swift main.swift |
Değişkenler (let / var) ve tipler
Sabitler için let, değiştirilebilir değerler için var kullanın; tipler genellikle çıkarılır.
| İşlem | Söz dizimi |
|---|---|
| Sabit | let age = 30 |
| Değişken | var count = 0 |
| Açık tip | let name: String = "Ada" |
| Temel tipler | Int, Double, String, Bool, Character |
| Tip dönüşümü | Double(i), String(n), Int("42") |
| Demet (tuple) | let pair = (1, "a") |
| Tip takma adı | typealias ID = Int |
| Tipi kontrol et | value is String, value as? String |
Optional'lar
Optional'lar bir değerin olası yokluğunu modeller; kullanmadan önce çıkarın (unwrap).
| İşlem | Söz dizimi |
|---|---|
| Optional tanımla | var name: String? = nil |
| Optional binding | if let n = name { ... } |
| Guard ile çıkar | guard let n = name else { return } |
| Nil birleştirme | let n = name ?? "default" |
| Optional zincirleme | user?.address?.city |
| Zorla çıkar (güvensiz) | name! |
| Örtük olarak çıkarılmış | var name: String! |
| Optional üzerinde map | name.map { $0.count } |
Dizeler
Dizeler, tam Unicode desteğine sahip değer tipleridir.
| İşlem | Söz dizimi |
|---|---|
| Uzunluk | s.count |
| Büyük / küçük harf | s.uppercased(), s.lowercased() |
| Birleştir | "foo" + "bar" |
| İnterpolasyon | "Total: \(price)" |
| İçerir mi | s.contains("ell") |
| Ön ek / son ek var mı | s.hasPrefix("he") |
| Böl | s.split(separator: ",") |
| Değiştir | s.replacingOccurrences(of: "a", with: "b") |
| Çok satırlı dize | """ ... """ |
Koleksiyonlar (Array, Dictionary, Set)
Üç temel koleksiyon tipi, hepsi değer tipi.
| İşlem | Söz dizimi |
|---|---|
| Dizi değişmezi | var nums = [1, 2, 3] |
| Ekle (append) | nums.append(4) |
| Eriş / say | nums[0], nums.count |
| Map / filter | nums.map { $0 * 2 }, nums.filter { $0 > 1 } |
| Sözlük değişmezi | var ages = ["Ada": 30] |
| Sözlüğe erişim | ages["Ada"] bir optional döndürür |
| Küme (set) değişmezi | var ids: Set = [1, 2, 3] |
| Kümeye ekle | ids.insert(4) |
| Sözlüğü dolaş | for (k, v) in ages { ... } |
Kontrol akışı
Koşullar parantez gerektirmez; switch kapsamlı (exhaustive) olmalıdır.
| İşlem | Söz dizimi |
|---|---|
| If / else | if x > 0 { ... } else { ... } |
| Üçlü (ternary) | let r = x > 0 ? "pos" : "neg" |
| Switch | switch n { case 1: ...; default: ... } |
| Aralıklı switch | case 1...5: ... |
| For-in döngüsü | for i in 0..<10 { ... } |
| Dizi üzerinde for-in | for item in items { ... } |
| While döngüsü | while x < 100 { ... } |
| Repeat-while | repeat { ... } while x < 100 |
| Break / continue | break, continue |
Fonksiyonlar ve closure'lar
Fonksiyonların etiketli parametreleri vardır; closure'lar kendi kendine yeten kod bloklarıdır.
| İşlem | Söz dizimi |
|---|---|
| Bir fonksiyon tanımla | func add(a: Int, b: Int) -> Int { a + b } |
| Dış etiket | func greet(to name: String) { ... } |
| Varsayılan parametre | func greet(name: String = "World") { ... } |
| Variadic parametre | func sum(_ nums: Int...) -> Int { ... } |
| Birden fazla geri dönüş (tuple) | func bounds() -> (min: Int, max: Int) { ... } |
| Closure ifadesi | let f = { (x: Int) -> Int in x * x } |
| Sondaki closure (trailing) | nums.map { $0 * 2 } |
| Kısaltılmış argümanlar | { $0 + $1 } |
Struct'lar ile sınıflar
Struct'lar değer tipidir (kopyalanır); sınıflar referans tipidir (paylaşılır).
| İşlem | Söz dizimi |
|---|---|
| Bir struct tanımla | struct Point { var x: Int; var y: Int } |
| Bir sınıf tanımla | class Person { var name: String } |
| Sınıf başlatıcı (initializer) | init(name: String) { self.name = name } |
| Örnek oluştur | let p = Point(x: 1, y: 2) |
| Struct'ı değiştiren metot | mutating func move() { x += 1 } |
| Sınıf metodu | func greet() { ... } |
| Kalıtım (yalnızca sınıf) | class Student: Person { ... } |
| Hesaplanan özellik | var area: Int { width * height } |
| Statik üye | static let shared = Manager() |
Enum'lar
Enum'lar ilgili değerleri gruplar ve ilişkili veri taşıyabilir.
| İşlem | Söz dizimi |
|---|---|
| Bir enum tanımla | enum Direction { case north, south } |
| Bir case kullan | let d = Direction.north |
| Enum üzerinde switch | switch d { case .north: ... } |
| Ham değerler | enum Status: Int { case ok = 200 } |
| Ham değere eriş | Status.ok.rawValue |
| Ham değerden oluştur | Status(rawValue: 200) |
| İlişkili değerler | case result(Int, String) |
| Enum'larda metotlar | func label() -> String { ... } |
En çok başvurduğunuz Swift söz dizimi tek sayfada. Bu Swift hile sayfası, temel dil için hızlı bir başvurudur - sabitler ve değişkenler, optional'lar, dizeler, koleksiyonlar, kontrol akışı, fonksiyonlar ve closure'lar, ayrıca iOS ve macOS uygulamaları geliştirdiğiniz struct'lar, sınıflar ve enum'lar.
Buradaki her şey standart Swift'tir ve resmi araç zinciriyle derlenir. İhtiyacınız olanı kopyalayın ya da her kod parçasını Swift playground'da canlı deneyin - Xcode gerekmez.
Swift hile sayfası SSS
Bu Swift hile sayfası ücretsiz mi?
Swift'te bir optional'ı nasıl çıkarırım (unwrap)?
nil tutabilir, dolayısıyla kullanmadan önce onu çıkarırsınız. Güvenli yollar şunlardır: optional binding (if let n = name { ... }), bir fonksiyonun başında guard let, nil birleştirme operatörü (name ?? "default") ve optional zincirleme (user?.name). name! ile zorla çıkarma işe yarar ama değer nil ise çöker, bu yüzden yalnızca emin olduğunuzda başvurun.Swift'te struct ile sınıf arasındaki fark nedir?
struct değer tipidir: atamak veya geçirmek bir kopya oluşturur, dolayısıyla değişiklikler orijinali etkilemez. Bir class referans tipidir: kopyalar aynı örneği paylaşır ve yalnızca sınıflar kalıtımı destekler. Apple'ın önerisi, varsayılan olarak struct'ları tercih etmek ve paylaşılan değiştirilebilir duruma veya kalıtıma ihtiyaç duyduğunuzda bir sınıf kullanmaktır.