hızlı | ||
İlk sürüm tarihi | 2 Haziran 2014 | |
---|---|---|
paradigma | Nesne yönelimli , prosedürel , zorunlu , işlevsel , bildirimsel | |
geliştirici | Apple ve diğer katkıda bulunanlar | |
geliştiriciler | Chris Lattner , Doug Gregor, John McCall, Ted Kremenek, Joe Groff ve Apple | |
Son sürüm | 5.3.3 (25 Ocak 2021) | |
Sürüm geliştirme | 5.4 | |
Yazıyor | Statik, Güçlü , Çıkarım | |
Tarafından etkilenmiş | Objective-C , C# , CLU , Haskell , Python , Racket , Ruby , Rust , Scala ve D dili | |
İşletim sistemi | Apple sistemleri ( Darwin , iOS , iPadOS , macOS , tvOS , watchOS ), Linux , Windows 10 , Android | |
Lisans | Apache lisansı sürüm 2.0 | |
İnternet sitesi | hızlı.org | |
Dosya uzantısı | hızlı | |
Swift , basit, verimli ve güvenli olmayı amaçlayan derlenmiş , çok paradigmalı bir nesne programlama dilidir . Açık kaynak kodlu olarak geliştirilmiştir .
Swift geliştirme projesi , aynı zamanda ana katkıda bulunan Apple tarafından yönetilmektedir ; ancak Swift topluluğunun birçok üyesinin yanı sıra Google ve IBM gibi diğer oyuncular da geliştirme sürecine katılıyor. Swift, Ubuntu , iOS , macOS , watchos ve tvOS işletim sistemlerinde resmi olarak desteklenmektedir . Debian ve Fedora gibi diğer Linux platformları için resmi olmayan (topluluk tarafından işletilen) destek mevcuttur .
Resmi bir İngilizce el kitabı çevrimiçi olarak mevcuttur.
Swift, Apple platformlarında C dili ve Objective-C ile birlikte çalışabilirliğe sahiptir .
Swift derleyicisi , makine kodu oluşturmak için LLVM kullanır .
Swift'in geliştirilmesine 2010 yılında Chris Lattner tarafından başlandı ve kaynakları Objective-C, Haskell, Ruby, Python, Caml veya C# gibi birçok programlama dilinde bulunuyor. İlk genel sürüm (1.0) tarihinde yayınlandı.2 Haziran 2014En WWDC 2014 .
İçinde haziran 2015, Apple, Swift dilinin açık kaynağına geçişi WWDC 2015'te duyurdu ve aynı yılın Aralık ayında yürürlüğe girecek. Swift sürüm 3.0 yayınlandıeylül 2016. Sürüm 4.0 şu tarihten beri mevcuttur:19 Eylül 2017ve esas olarak kaynak kod sözdiziminin kararlılığına odaklanır. Sürüm 5.0 şu tarihten itibaren mevcuttur:25 Mart 2019ve esas olarak, stabilizasyon getirir ABI .
Swift, Apple teknolojilerine alışmış geliştiriciler tarafından iyi karşılandı. Özellikle, bunu Objective-C'den daha basit ve daha özlü buldular.
Bazı geliştiriciler, tamamen Swift'de yeni yazılım geliştireceklerini duyurdular. Örneğin, Vesper yazılımının Mac sürümünün tamamen Swift ile geliştirileceğini açıklayan Brent Simmons (MarsEdit ve NetNewsWire'ın arkasındaki geliştirici) için durum budur. Facebook ayrıca Parse'a Swift desteği ekledi.
Sunumundan birkaç gün sonra Swift, en popüler 20 programlama dili (TIOBE endeksi) listesine girme yolundaydı. İçindetemmuz 2014Swift de olmamış 16 inci sıralamasında yerinde.
Swift Programlama Dili kitabı , Swift'in WWDC 2014'te duyurulmasından bir gün sonra 370.000'den fazla indirildi.
Apple, Swift'i geliştirmek için geliştirici geri bildirimlerini dikkate aldığını açıkça iddia ediyor.
Swift'in ilk sürümlerine yönelik bir geliştirici eleştirisi, erişim değiştiricilerinin olmamasıydı (Objective-C'de bulunanlar gibi); Apple gelecekteki ürün özellikleri hakkında nadiren iletişim kurarken, bir Apple mühendisi geliştiricilere yanıt vererek bunların gelecekteki Swift güncellemelerine ekleneceğini duyurdu. 21 Temmuz 2014, Apple bunları Swift'e ekler.
Orta-temmuz 2014, Apple kendi web sitesinde Swift'e özel bir blog açar ve bu blogda Apple mühendisleri Swift'in yaratılmasının perde arkasını ve dille ilgili en son haberleri ve tavsiyeleri tartışır.
8 Haziran 2015Apple, derleyici kodunun ve standart kitaplıkların bir açık kaynak lisansı altında dağıtılacağını duyurdu .
Apple, topluluk katkılarının kabul edileceğini ve teşvik edileceğini söylüyor.
Dan beri 3 Aralık 2015, Swift artık Apache 2.0 lisansı altında mevcuttur . Açık kod, derleyiciyi, standart dil kitaplıklarını ve bir paket yöneticisini içerir.
Swift, Apple platformlarında, Linux'ta ( Ubuntu , CentOS 8 , Amazon Linux 2) ve Windows'ta (sürüm 5.3'ten beri) resmi olarak desteklenmektedir .
Android , Linux on ARM mimarisi , Windows, WebAssembly ve diğer sistemler için gayri resmi olarak destek sağlanmaktadır . Swift geliştirme ekibi, yeni platformları resmi olarak desteklemek istediğini açıkladı.
Değişkenler ve sabitler bilgi depolamak için kullanılır. Diğer türleri arasında Swift destekleri Int, Double, Float, Char, Stringve Bool.
DeğişkenlerSwift, değişkenin türünü çıkarır, yani bir değişkeni oluştururken türünü belirtmek gerekli değildir. Gerekirse, açıkça belirtmek mümkündür.
var entierImplicite = 70 var doubleImplicite = 70.0 var floatExplicite: Float = 70 // On précise ici explicitement le type de la variable sabitlerSabitler, program boyunca değişmeden kalacak herhangi bir değer için kullanılacaktır.
let pi = 3.14159 let deuxPi = 2 * pi Değişken isimleriBir değişkeni hemen hemen her Unicode karakteriyle adlandırmak mümkündür , örneğin:
var fréquentationTourEiffelEn2011 = 7100000 let π = 3.14159 let 你好 = "你好世界" let سعيد" = فرح" let ? = "Triste"Swift'deki değişkenlerin, sabitlerin ve diğer öğelerin adları boşluk içermez.
Orada da dahil Swift koşulları çeşitli türleri vardır if, switchve if let.
eğer koşul if age >= 18 { print("Vous êtes majeur") } else { print("Vous êtes mineur") }Şunları kullanmak da mümkündür else if :
if age >= 18 { print("Vous êtes un adulte") } else if age >= 11 { print("Vous êtes un adolescent") } else { print("Vous êtes un enfant") } Anahtar koşulu switch nombreDeCôtés { case 3: print("Triangle") case 4: print("Quadrilatère") case 5: print("Pentagone") case 6: print("Hexagone") default: print("Nom indisponible pour votre figure") }Swift'de güvenlik nedenleriyle, anahtar tipi koşullarının kapsamlı olması gerekir, yani ilgili değişkenin alabileceği tüm değerleri yönetmek gerekir. Anahtarın kapsamlı olması için, değişkenin tüm olası değerlerini açıkça test etmeniz gerekir (mümkün olduğunda, genellikle yalnızca az sayıda olası değere sahip numaralandırma durumunda) veya talimatları olacak varsayılanı ekleyerek test etmelisiniz . önceki kutulardan hiçbiri test edilen değişkenin değerine karşılık gelmiyorsa yürütülür .
Aynı anda birkaç sonucu test etmek de mümkündür:
switch lettre { case "a","e","i","o","u","y": print("Voyelle") case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z": print("Consonne") default: print("Votre caractère n'est pas listé") } C dil anahtarı ile karşılaştırmaC dilinden farklı olarak, her bir anahtar durumundan sonra break ifadesini eklemek gerekli değildir: örtük olarak bulunur. C'nin "düşme" davranışını açıkça yeniden oluşturmak istiyorsak, talimatı kullanabiliriz fallthrough.
Ayrıca, Swift'in anahtarı birinci sınıf bir kontrol yapısıdır ve C'deki gibi bir goto'nun eşdeğeri değildir, yani her kutunun varsayılan olarak kendi bağlamı vardır.
Swift'de while , Repeat while ve for in dahil olmak üzere çeşitli döngü türleri vardır . Koşullar gibi, döngü koşullarının da parantez içine alınması gerekmez. Swift 1.0'dan beri mevcut olan döngüler için " C tipi", for in döngülerine kıyasla gereksiz görüldüğünden Swift 3.0 ile ortadan kalkar .
Döngüler sırasındaDöngüler tartışmasız en temel döngüler olsa da, koşulları doğru olduğu sürece talimatlarını tekrar ederler.
// Exemple d'une boucle affichant les nombres de 0 à 99 var i = 0 while i < 100 { print(i) i += 1 } İçinde için döngülerÇünkü in döngüler Swift'de kuşkusuz en sık görülen ve aynı zamanda en güçlü olanlardır, etkileyiciliklerine ek olarak güvenliği (örneğin sonsuz döngülerden kaçınarak) ve performansı (dil bazı bellek bütünlüğü kontrolleri olmadan da yapabilir) geliştirirler.
Türü sözdizimi şeklini alır for élément in séquenceburada élément, her bir döngü dönüşte, bir elemanının bir değer atanır sabitinin adına karşılık gelen séquenceyerde séquencebir dizi, bir sözlük ya da başka bir sıralı tip olabilir.
Aşağıdaki kod:
let prénoms = ["Victor", "Emmanuel", "Victoria"] for prénom in prénoms { print("Bonjour, \(prénom) !") }"while" kullanılarak şöyle yazılır:
let prénoms = ["Victor", "Emmanuel", "Victoria"] var i = 0 while i < prénoms.count { print("Bonjour, \(prénoms[i]) !") i += 1 }For in döngüsü, daha anlamlı olmasının yanı sıra, yanlış bir dizine erişmek veya hatta sonsuz bir döngü oluşturmak gibi belirli programlama hatalarını önler.
C'deki bir for döngüsü gibi, Swift de kapalı aralık operatörünü "..." kullanarak skaler bir aralık üzerinde yineleme yapmanızı sağlar:
for i in 1...10 { print("i = \(i)") }Yinele while döngüsü ( diğer dillerdeki do while döngüsüne eşdeğerdir ), döngüdeki talimatları en az bir kez tekrarlamanıza olanak tanır. Döngünün tekrarlanıp tekrarlanmaması için koşulun kontrol edilmesi ancak talimatların ilk yürütülmesinden sonradır.
// Donnons nous la fonction lancerDé() qui retourne un entier aléatoire en 1 et 6 var valeurDé1: Int var valeurDé2: Int repeat { valeurDé1 = lancerDé() valeurDé2 = lancerDé() print("\(valeurDé1) et \(valeurDé2)") / } while !(valeurDé1 == 6 && valeurDé2 == 6) // Tant qu'on a pas un double sixİsteğe bağlı , herhangi bir tür için bir değeri veya bir değerin yokluğunu temsil etmeye izin veren genel bir türdür . İsteğe bağlı bir tür bildirmek için adını bir soru işareti ile takip ederiz, örneğin Int?veya tekrar Double?. İsteğe bağlı bir tür kullanmanın bir örneği, bir String'i bir tamsayıya dönüştürmektir:
let entierOptionel = Int(chaineDeCaractères)Burada, integerOptionel türünde olacaktır Int?, yani isteğe bağlı bir tamsayı , gerçekten de karakter dizgimizin bir tamsayıya karşılık gelmeyen bir değere sahip olması mümkündür, örneğin "J'aime les crêpes"veya hatta "2,334". Bu gibi durumlarda dizeyi bir tamsayıya dönüştürmek mümkün değildir ve entierOptionelbu nedenle değeri olmayacaktır, yani olacaktır nil. Karakter dizgisi dönüştürülebilir bir değer içeriyorsa, örneğin "12", dönüştürme mümkün entierOptionelolurdu ve 12örneğimizde bir değer içerirdi.
Swift, isteğe bağlı bir türün doğrudan kullanılmasına izin vermez, örneğin aşağıdaki kod bir hata üretir:
// Erreur: Value of optional type 'Int?' must be unwrapped to a value of type 'Int' let résultat = entierOptionel + 10Aslında, isteğe bağlı paketi açmanız, yani bu amaç için sağlanan birçok sözdiziminden birini kullanarak değerine açıkça erişmeniz gerekir.
Durum if letif let koşulu, bir kod bloğunda bir değişken içeriyorsa, bir değişkenin değerine erişime izin veren bir koşul türüdür:
if let valeur = entierOptionel { print(valeur + 10) } else { print("entierOptionel n'a pas de valeur") } Şebeke ??Operatör ??, belirli durumlarda büyük bir alan tasarrufu ve okunabilirlik sağlar, dolayısıyla aşağıdaki kod:
if let nom = nomAnimalDeCompagnie { print(nom) } else { print("Aucun nom précisé pour votre animal.") }Tek bir satırla değiştirilebilir:
print(nomAnimalDeCompagnie ?? "Aucun nom précisé pour votre animal.")Bazı durumlarda, bir değerin asla olmayacağından tamamen eminiz nil, daha sonra isteğe bağlı değerden sonra değerine doğrudan erişime izin veren bir ünlem işareti ekleriz:
// urlDeWikipedia sera ici de type URL au lieu de URL? let urlDeWikipedia = URL(string: "http://fr.wikipedia.org/")!Böyle bir işlemi gerçekleştirmeden önce bir değerin gerçekten mevcut olduğundan her zaman tam olarak emin olmak gerekir, aslında Swift, bir değere bu şekilde erişmeye çalışırsa, programın yürütülmesini uygun hata ile derhal sonlandıracaktır. yok.
NULLC ile karşılaştırmanilİsteğe bağlı Swift ve NULLC arasında belirli bir benzerlik görebiliriz .
C'de NULLbazen belirli işlevlerin hiçbir değeri temsil etmesine izin vermese de, fark NULLsadece C'deki işaretçiler için geçerliyken Swift'de herhangi bir tür isteğe bağlı yapılabilir.
Bir sınıf bildirerek, ilişkili değişkenlerle (özellikler olarak adlandırılır) ve işlevlerle (yöntemler olarak adlandırılır) yeni bir tür oluştururuz.
İşte Swift'de sınıf oluşturma örneği, bir hayvan hakkında temel bilgileri (bacakların adı ve sayısı) depolar ve bu hayvanı tanımlayan bir dize döndürebilir (simpleDescription işleviyle):
class Animal { // Exemple de propriétés var pattes: Int var nom: String // Fonction d'initialisation init(nomEspece: String, nombreDePattes: Int) { self.nom = nomEspece self.pattes = nombreDePattes } // Exemple de méthode func simpleDescription() -> String { return "Cet animal s'appelle \(nom) et il a \(pattes) pattes." } }Bir sınıfın değişkenleri ve sabitleri, özellikler olarak adlandırılır; işlevlerine yöntemler denir. Tüm isteğe bağlı olmayan özellikler, başlatma zamanında bir değere sahip olmalıdır.