Nopea | ||
![]() | ||
Ensimmäisen version päivämäärä | 2. kesäkuuta 2014 | |
---|---|---|
Paradigma | Kohdekeskeinen , menettelyllinen , välttämätön , toiminnallinen , vakuuttava | |
Kehittäjä | Apple ja muut avustajat | |
Kehittäjät | Chris Lattner , Doug Gregor, John McCall, Ted Kremenek, Joe Groff ja Apple | |
Viimeinen versio | 5.3.3 (25. tammikuuta 2021) | |
Kehitysversio | 5.4 | |
Kirjoittaminen | Staattinen, vahva , päättely | |
Vaikuttanut | Objektiivi-C , C # , CLU , Haskell , Python , Racket , Ruby , Rust , Scala ja D kieli | |
Käyttöjärjestelmä | Apple-järjestelmät ( Darwin , iOS , iPadOS , macOS , tvOS , watchOS ), Linux , Windows 10 , Android | |
Lisenssi | Apache-lisenssiversio 2.0 | |
Verkkosivusto | swift.org | |
Tiedostopääte | nopea | |
Swift on koottu , moniparadigmainen objektiohjelmointikieli, jonka tavoitteena on olla yksinkertainen, tehokas ja turvallinen. Se on kehitetty avoimessa lähdekoodissa .
Swift-kehitysprojektia johtaa Apple , joka on myös tärkein rahoittaja; mutta monet Swift-yhteisön jäsenet sekä muut pelaajat, kuten Google ja IBM , ovat myös mukana sen kehittämisessä. Swift on virallisesti tuettu käyttöjärjestelmissä Ubuntu , iOS , macOS , watchos ja tvOS . Epävirallinen (yhteisön ylläpitämä) tuki on olemassa muille Linux-alustoille, kuten Debianille ja Fedoralle .
Virallinen englanninkielinen käsikirja on saatavana verkossa.
Swiftillä on yhteentoimivuus C-kielen sekä Object-C: n kanssa Apple-alustoilla.
Swift- kääntäjä käyttää LLVM : ää konekoodien luomiseen.
Swiftin kehittämisen aloitti vuonna 2010 Chris Lattner, ja sen juuret ovat monissa ohjelmointikielissä, kuten Objective-C, Haskell, Ruby, Python, Caml tai C #. Ensimmäinen julkinen versio (1.0) julkaistiin2. kesäkuuta 2014klo WWDC 2014 .
Sisään kesäkuu 2015, Apple ilmoittaa vaihtaneensa Swift-kieltä avoimeen lähdekoodiin WWDC 2015: n aikana, ja se tulee voimaan saman vuoden joulukuussa. Swift-versio 3.0 julkaistusyyskuu 2016. Versio 4.0 on saatavana vuodesta19. syyskuuta 2017ja keskittyy lähinnä lähdekoodisyntaksin vakauteen. Versio 5.0 on saatavana vuodesta25. maaliskuuta 2019ja tuo pääasiassa ABI: n vakauttamisen .
Apple-tekniikoihin tottuneet kehittäjät ovat ottaneet Swiftin hyvin vastaan. Erityisesti heidän mielestään se oli yksinkertaisempi ja ytimekkäämpi kuin tavoite C.
Jotkut kehittäjät ovat ilmoittaneet kehittävänsä uutta ohjelmistoa kokonaan Swiftissä. Näin on esimerkiksi Brent Simmonsin kanssa (MarsEditin ja NetNewsWiren kehittäjä), joka ilmoitti, että hänen Vesper-ohjelmistonsa Mac-versio kehitettäisiin kokonaan Swiftin kanssa. Facebook lisäsi myös Parselle Swift-tuen.
Muutama päivä esityksen jälkeen Swift oli matkalla 20 suosituimman ohjelmointikielen luetteloon (TIOBE-indeksi). Sisäänheinäkuu 2014Swift oli tapahtunut klo 16 : nnen paikka rankingissa.
Kirja Swift-ohjelmointikieli oli ladattu yli 370 000 kertaa päivässä Swift-ilmoituksen jälkeen WWDC 2014: ssä.
Apple väittää selvästi ottavansa kehittäjien palautteen huomioon Swiftin parantamiseksi.
Yksi kehittäjien kritiikki Swiftin varhaisista versioista oli pääsymuuttujien (kuten Objective-C: ssä olevien) puute ; Vaikka Apple viestii harvoin tulevista tuoteominaisuuksista, Apple-insinööri vastaa kehittäjille ilmoittamalla, että ne lisätään tuleviin Swift-päivityksiin. 21. heinäkuuta 2014, Apple lisää nämä Swiftiin.
Keski-heinäkuu 2014, Apple avaa verkkosivustollaan Swiftille omistetun blogin, jossa Applen insinöörit keskustelevat Swiftin luomisen kulissien takana sekä viimeisimpiä kieliä koskevia uutisia ja neuvoja.
8. kesäkuuta 2015, Apple ilmoittaa, että kääntäjäkoodi ja vakiokirjastot jaetaan avoimen lähdekoodin lisenssillä .
Apple sanoo, että yhteisön lahjoitukset hyväksytään ja kannustetaan.
Siitä asti kun 3. joulukuuta 2015, Swift on nyt saatavana Apache 2.0 -lisenssillä . Avoin koodi sisältää kääntäjän, vakiokielikirjastot ja paketinhallinnan.
Swift on virallisesti tuettu Apple-alustoilla, Linuxilla ( Ubuntu , CentOS 8 , Amazon Linux 2) ja Windowsilla (versiosta 5.3 lähtien).
Tukea annetaan epävirallisesti Androidille , Linuxille ARM-arkkitehtuurilla , Windowsille, WebAssemblylle ja muille järjestelmille. Swift-kehitystiimi on ilmoittanut haluavansa tukea virallisesti uusia alustoja.
Muuttujia ja vakioita käytetään tietojen tallentamiseen. Swift tukee muun tyyppisiä Int, Double, Float, Char, Stringja Bool.
MuuttujatSwift päättelee muuttujan tyypistä, toisin sanoen muuttujan tyyppiä ei tarvitse määritellä sitä luodessa. Tarvittaessa on mahdollista määrittää se nimenomaisesti.
var entierImplicite = 70 var doubleImplicite = 70.0 var floatExplicite: Float = 70 // On précise ici explicitement le type de la variable VakiotVakioita on käytettävä mihin tahansa arvoon, joka pysyy muuttumattomana ohjelman aikana.
let pi = 3.14159 let deuxPi = 2 * pi Muuttujien nimetMuuttuja voidaan nimetä melkein millä tahansa Unicode- merkillä , esimerkiksi:
var fréquentationTourEiffelEn2011 = 7100000 let π = 3.14159 let 你好 = "你好世界" let سعيد" = فرح" let ? = "Triste"Swiftin muuttujien, vakioiden ja muiden kohteiden nimet eivät sisällä välilyöntejä.
On olemassa useita erilaisia olosuhteita Swift, mukaan lukien if, switchja if let.
Jos ehto if age >= 18 { print("Vous êtes majeur") } else { print("Vous êtes mineur") }On myös mahdollista käyttää 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") } Kytkimen kunto 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") }Swiftissä turvallisuussyistä kytkintyyppiehtojen on oltava tyhjentäviä, ts. On tarpeen hallita kaikkia arvoja, jotka kyseinen muuttuja voi saada. Jotta vaihto olisi tyhjentävä, sinun on joko testattava nimenomaisesti kaikki muuttujan mahdolliset arvot (jos mahdollista, tyypillisesti sellaisten luetteloiden tapauksessa, joissa on vain pieni määrä mahdollisia arvoja), tai lisäämällä oletusarvot, joiden ohjeet suoritetaan, jos mikään edellisistä kentistä ei vastannut testatun muuttujan arvoa.
On myös mahdollista testata useita tuloksia samanaikaisesti:
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é") } Vertailu C-kielikytkimeenToisin kuin C-kielellä, ei ole välttämätöntä lisätä katkaisulausetta jokaisen kytkentätapauksen jälkeen: se esiintyy implisiittisesti. Jos haluamme toistaa nimenomaisesti C: n "kaatumisen" käyttäytymisen, voimme käyttää käskyä fallthrough.
Lisäksi Swiftin kytkin on ensiluokkainen ohjausrakenne eikä vastaava goto kuin C: ssä, mikä tarkoittaa, että jokaisella laatikolla on oletusarvoisesti oma kontekstinsa.
Swiftissä on useita silmukoita, mukaan lukien while , repeat while ja for in . Kuten olosuhteissa, silmukan olosuhteiden ei tarvitse olla sulkujen ympäröimiä. " C-tyypin" varten silmukoita läsnä, koska Swift 1,0 katoavat Swift 3,0, koska ne katsotaan tarpeettomaksi verrattuna in silmukoita .
Vaikka silmukoitaVaikka silmukat ovat epäilemättä kaikkein perussilmukat, ne toistavat ohjeet niin kauan kuin niiden kunto on totta.
// Exemple d'une boucle affichant les nombres de 0 à 99 var i = 0 while i < 100 { print(i) i += 1 } Sillä silmukoissaSillä silmukat ovat epäilemättä yleisimmät ja myös tehokkaimmat Swiftissä, ilmaisunsa lisäksi ne parantavat turvallisuutta (välttämällä esimerkiksi äärettömiä silmukoita) sekä suorituskykyä (kieli voi tehdä ilman muistin eheyden tarkistuksia).
Tyyppi syntaksi on muodoltaan for élément in séquencejossa élémentvastaa nimi vakio, joka on kunkin kierroksen silmukka, osoitetaan arvo elementin séquence, jossa séquencevoi olla erilaisia, sanakirjan tai mikä tahansa muu juokseva tyyppi.
Seuraava koodi:
let prénoms = ["Victor", "Emmanuel", "Victoria"] for prénom in prénoms { print("Bonjour, \(prénom) !") }Kirjoitettaisiin näin käyttäen "while":
let prénoms = ["Victor", "Emmanuel", "Victoria"] var i = 0 while i < prénoms.count { print("Bonjour, \(prénoms[i]) !") i += 1 }Sen lisäksi, että for in -silmukka on ilmeikkäämpi, se välttää tiettyjä ohjelmointivirheitä, kuten väärän hakemiston käyttämisen tai jopa äärettömän silmukan luomisen.
Kuten for-silmukka C: ssä, Swift antaa sinun iteroida skalaarivälin yli käyttämällä suljetun aikavälin operaattoria "...":
for i in 1...10 { print("i = \(i)") }Repeat while -silmukka (vastaa do while -silmukkaa muilla kielillä) antaa sinun toistaa silmukan ohjeet ainakin kerran. Ehto tarkistetaan vasta käskyjen ensimmäisen suorittamisen jälkeen, jotta silmukka voidaan toistaa.
// 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 sixValinnainen on geneerinen tyyppi sallii edustamaan, mille tahansa tyyppisen arvo tai puuttuminen arvon. Valinnaisen tyypin julistamiseksi noudatamme sen nimeä esimerkiksi kysymysmerkillä Int?tai uudestaan Double?. Esimerkki valinnaisen tyypin käytöstä on merkkijonon muuntaminen kokonaisluvuksi:
let entierOptionel = Int(chaineDeCaractères)Tässä integerOptionel on tyypiltään Int?, toisin sanoen valinnainen kokonaisluku , todellakin on mahdollista, että merkkijonollamme on arvo, joka ei vastaa esimerkiksi kokonaislukua "J'aime les crêpes"tai edes "2,334". Tällaisissa tapauksissa merkkijonoa ei voida muuntaa kokonaisluvuksi, eikä entierOptionelsillä näin ollen ole arvoa eli se on nil. Jos merkkijono sisältäisi esimerkiksi vaihdettavan arvon, "12"muunnos olisi ollut mahdollista ja entierOptionelolisi sisältänyt arvon 12esimerkissämme.
Swift ei salli valinnaisen tyypin käyttöä suoraan, esimerkiksi seuraava koodi aiheuttaa virheen:
// Erreur: Value of optional type 'Int?' must be unwrapped to a value of type 'Int' let résultat = entierOptionel + 10Itse asiassa sinun on purettava valinnainen, eli nimenomaisesti käytettävä sen arvoa käyttämällä yhtä monista tähän tarkoitukseen tarkoitetuista syntaksista.
Kunto if letIf let -ehto on eräänlainen ehto, joka sallii pääsyn muuttujan arvoon, jos se sisältää sellaisen, koodilohkossa:
if let valeur = entierOptionel { print(valeur + 10) } else { print("entierOptionel n'a pas de valeur") } Operaattori ??Operaattori ??säästää tilaa ja luettavuutta tietyissä tapauksissa, joten seuraava koodi:
if let nom = nomAnimalDeCompagnie { print(nom) } else { print("Aucun nom précisé pour votre animal.") }Voidaan korvata yhdellä rivillä:
print(nomAnimalDeCompagnie ?? "Aucun nom précisé pour votre animal.")Joissakin tapauksissa olemme täysin varmoja siitä, että arvoa ei koskaan tule olemaan nil, lisätään sitten huutomerkki valinnaisen arvon jälkeen, joka antaa suoran pääsyn sen arvoon:
// urlDeWikipedia sera ici de type URL au lieu de URL? let urlDeWikipedia = URL(string: "http://fr.wikipedia.org/")!Aina on oltava täysin varma, että arvo todella on läsnä ennen tällaisen toiminnon suorittamista, itse asiassa Swift lopettaa välittömästi ohjelman suorittamisen asianmukaisella virheellä, jos yritetään päästä arvoon, joka ei ei ole olemassa.
Vertailu NULLC: n kanssaVoimme nähdä jossain tietyn samankaltaisuuden nilvalinnaisen Swiftin ja NULLC: n välillä.
Vaikka C: ssä NULLtoisinaan tietyt toiminnot eivät edusta arvoa, ero on siinä, että NULLse koskee vain osoittimia C: ssä, kun taas Swiftissä mikä tahansa tyyppi voidaan tehdä valinnaiseksi.
Julistamalla luokan luomme uuden tyypin, johon liittyy muuttujia (kutsutaan ominaisuuksiksi) ja funktioita (kutsutaan menetelmiksi).
Tässä on esimerkki luokan luomisesta Swiftissä, se tallentaa perustiedot eläimestä (nimi ja jalkojen lukumäärä) ja voi palauttaa tätä eläintä kuvaavan merkkijonon (yksinkertaisen kuvauksen avulla):
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." } }Luokan muuttujia ja vakioita kutsutaan ominaisuuksiksi; sen toimintoja kutsutaan menetelmiksi. Kaikilla ei-valinnaisilla ominaisuuksilla on oltava arvo alustuksen yhteydessä.