Menu
Coddy logo textTech

Swift Hile Sayfası

Son güncelleme

Hello World ve temeller

Swift üst düzeyde şablon koda ihtiyaç duymaz - tek bir satır çalışır.

İşlemSöz dizimi
Bir satır yazdırprint("Hello, World!")
Satır sonu olmadan yazdırprint("Hi", terminator: "")
Dize interpolasyonuprint("Hi \(name)")
Yorum// this is a comment
Çok satırlı yorum/* ... */
Bir modülü içe aktarimport Foundation
Bir dosyayı çalıştırswift 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.

İşlemSöz dizimi
Sabitlet age = 30
Değişkenvar count = 0
Açık tiplet name: String = "Ada"
Temel tiplerInt, 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 etvalue is String, value as? String

Optional'lar

Optional'lar bir değerin olası yokluğunu modeller; kullanmadan önce çıkarın (unwrap).

İşlemSöz dizimi
Optional tanımlavar name: String? = nil
Optional bindingif let n = name { ... }
Guard ile çıkarguard let n = name else { return }
Nil birleştirmelet n = name ?? "default"
Optional zincirlemeuser?.address?.city
Zorla çıkar (güvensiz)name!
Örtük olarak çıkarılmışvar name: String!
Optional üzerinde mapname.map { $0.count }

Dizeler

Dizeler, tam Unicode desteğine sahip değer tipleridir.

İşlemSöz dizimi
Uzunluks.count
Büyük / küçük harfs.uppercased(), s.lowercased()
Birleştir"foo" + "bar"
İnterpolasyon"Total: \(price)"
İçerir mis.contains("ell")
Ön ek / son ek var mıs.hasPrefix("he")
Böls.split(separator: ",")
Değiştirs.replacingOccurrences(of: "a", with: "b")
Çok satırlı dize""" ... """

Koleksiyonlar (Array, Dictionary, Set)

Üç temel koleksiyon tipi, hepsi değer tipi.

İşlemSöz dizimi
Dizi değişmezivar nums = [1, 2, 3]
Ekle (append)nums.append(4)
Eriş / saynums[0], nums.count
Map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
Sözlük değişmezivar ages = ["Ada": 30]
Sözlüğe erişimages["Ada"] bir optional döndürür
Küme (set) değişmezivar ids: Set = [1, 2, 3]
Kümeye ekleids.insert(4)
Sözlüğü dolaşfor (k, v) in ages { ... }

Kontrol akışı

Koşullar parantez gerektirmez; switch kapsamlı (exhaustive) olmalıdır.

İşlemSöz dizimi
If / elseif x > 0 { ... } else { ... }
Üçlü (ternary)let r = x > 0 ? "pos" : "neg"
Switchswitch n { case 1: ...; default: ... }
Aralıklı switchcase 1...5: ...
For-in döngüsüfor i in 0..<10 { ... }
Dizi üzerinde for-infor item in items { ... }
While döngüsüwhile x < 100 { ... }
Repeat-whilerepeat { ... } while x < 100
Break / continuebreak, continue

Fonksiyonlar ve closure'lar

Fonksiyonların etiketli parametreleri vardır; closure'lar kendi kendine yeten kod bloklarıdır.

İşlemSöz dizimi
Bir fonksiyon tanımlafunc add(a: Int, b: Int) -> Int { a + b }
Dış etiketfunc greet(to name: String) { ... }
Varsayılan parametrefunc greet(name: String = "World") { ... }
Variadic parametrefunc sum(_ nums: Int...) -> Int { ... }
Birden fazla geri dönüş (tuple)func bounds() -> (min: Int, max: Int) { ... }
Closure ifadesilet 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).

İşlemSöz dizimi
Bir struct tanımlastruct Point { var x: Int; var y: Int }
Bir sınıf tanımlaclass Person { var name: String }
Sınıf başlatıcı (initializer)init(name: String) { self.name = name }
Örnek oluşturlet p = Point(x: 1, y: 2)
Struct'ı değiştiren metotmutating func move() { x += 1 }
Sınıf metodufunc greet() { ... }
Kalıtım (yalnızca sınıf)class Student: Person { ... }
Hesaplanan özellikvar area: Int { width * height }
Statik üyestatic let shared = Manager()

Enum'lar

Enum'lar ilgili değerleri gruplar ve ilişkili veri taşıyabilir.

İşlemSöz dizimi
Bir enum tanımlaenum Direction { case north, south }
Bir case kullanlet d = Direction.north
Enum üzerinde switchswitch d { case .north: ... }
Ham değerlerenum Status: Int { case ok = 200 }
Ham değere erişStatus.ok.rawValue
Ham değerden oluşturStatus(rawValue: 200)
İlişkili değerlercase result(Int, String)
Enum'larda metotlarfunc 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?
Evet. Bu Swift hile sayfası tamamen ücretsizdir ve kayıt gerektirmez. Yer imlerinize ekleyin ve bir optional desenine, closure söz dizimine ya da koleksiyon metoduna bakmanız gerektiğinde geri dönün.
Swift'te bir optional'ı nasıl çıkarırım (unwrap)?
Bir optional ya bir değer ya da 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?
Bir 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.
Swift'i çevrimiçi olarak deneyebilir miyim?
Evet. Swift playground'u açarak bu hile sayfasındaki herhangi bir kod parçasını tarayıcınızda çalıştırabilirsiniz - kurmanız gereken bir Xcode yok. Yapı istediğinizde, Coddy'nin ücretsiz etkileşimli Swift kursu sizi optional'lar ve koleksiyonlardan struct'lara, sınıflara ve enum'lara adım adım götürür.
Bu hile sayfası yeni başlayanlar için uygun mu?
Evet. En yaygın konulardan (değişkenler, optional'lar, kontrol akışı) gelişmiş olanlara (closure'lar, struct'lar ile sınıflar, enum'lar) doğru düzenlenmiştir, böylece üstteki bölümleri ilk günden kullanabilir ve zamanla geri kalanına geçebilirsiniz.
Coddy programming languages illustration

Coddy ile Swift öğren

BAŞLA