Kokoelmat
Kokoelmat
Kokoelmat on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/1. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 1 oppituntia.
Johdanto
Hei,
Tässä oppitunnissa tutustumme Swiftin kokoelmatyyppeihin, jotka ovat yksi tärkeimmistä aiheista.
Aloitetaan siis.
Swiftissä on kolme kokoelmatyyppiä.
Array → Järjestyksessä oleva kokoelmatyyppi.
Set → Järjestämätön kokoelmatyyppi, jonka arvot ovat yksilöllisiä.
Dictionary → Järjestyksetön avain–arvo-pareihin perustuva kokoelmatyyppi.
Muuttuva – muuttumaton
Se, ovatko kokoelmatyyppimme muuttumattomia vai muokattavia, määräytyy määrittelytavan perusteella.
Jos määrittelemme kokoelman let-lausekkeella, se on muuttumaton, kun taas var-määrittely tekee siitä muokattavan.
Jos määrittelemämme arvo ei muutu myöhemmin, letin käyttö antaa kääntäjälle mahdollisuuden optimoida suoritusta tehokkaammin.
Array
Array on kokoelmatyyppi, jota käytetään tietojen säilyttämiseen järjestyksessä. Swift 3 -versiosta lähtien Arrayn kaikkien alkioiden ei tarvitse olla samaa tyyppiä.
Yksinkertaisen Array-määrittelyn syntaksi näkyy alla olevassa esimerkissä.
// Let's create an empty array.
var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// Prints "someInts is of type [Int] with 0 items."Taulukon luominen oletusarvolla
Joissakin tilanteissa haluamme luoda tietynkokoisen taulukon, jonka kaikilla alkioilla on oletusarvo. Tätä varten Array-konstruktorille on välitettävä kaksi argumenttia.
Nämä argumentit määrittävät oletusarvon ja taulukon alkioiden määrän.
var threeDoubles = Array(repeating: 0.0, count: 3)
print(threeDoubles)
// threeDoubles is of type [Double], and equals [0.0, 0.0, 0.0]
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
print(anotherThreeDoubles)
var sixDoubles = threeDoubles + anotherThreeDoubles
print(sixDoubles)
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]Arrayn luominen Array Literalin avulla
Edellisessä esimerkissä opimme luomaan tyhjän Arrayn. Joissakin tapauksissa saatamme kuitenkin haluta luoda Arrayn Array Literalin avulla.
Tutustutaan sen käyttöön esimerkin avulla.
/*
We have defined a variable named catList,
and with the [String] statement we specified
that its type is an Array containing String elements.
*/
var catList: [String] = ["Garfield", "Tom"]
print(catList)
/*
It will understand that the array is an Array containing
String statements, since we assign a value that
defines the variable. (Swift type inference)
*/
var shoppingList = ["Eggs", "Milk"]
print(shoppingList)Arrayn arvon käyttäminen
Kun haluamme käyttää tietyn indeksin alkiota järjestyksessä olevasta kokoelmasta, riittää, että käytämme seuraavaa syntaksia.
myArray [index]
Tarkastellaan esimerkkiä.
// We have defined an array with 3 elements of type Int.
var numbers:[Int] = [1, 5, 21]
// Arrays start from Index 0. For example, in order to reach the value 5, which is the 2nd element, we need to access the 1st index.
var a = numbers[1]
print( "Value of numbers at index 1 is \(a)" )Uusien alkioiden lisääminen Arrayhin
Voimme lisätä uuden alkion Arrayhin.
Alla määritellään catList-niminen Array. Seuraavassa vaiheessa tähän Arrayhin lisätään uusi alkio append-metodilla.
// The Array named catList was defined with 1 initial element.
var catList = ["Tom"]
/*
We are adding a new item with a Garfield
value using the append method.
*/
catList.append("Garfield")
// Our array will now have 2 elements.
/*
With the + = operator, we can do the
work that the append method does.
*/
catList += ["Sylvester"]
Datan lisääminen Arrayn tiettyyn indeksiin
Edellisessä esimerkissä append-metodilla lisäämäni arvo lisätään Arrayn loppuun. Joskus saatamme kuitenkin haluta lisätä arvon tiettyyn indeksiin. Tällöin käytämme insert-metodia.
Syntaksi näyttää tältä.
myArr.insert ("The data to add", at: index);
Selvitetään asia esimerkin avulla.
var catList = ["Tom"]
catList.insert("Garfield", at: 1)
print(catList)
Tietyn alkion poistaminen Arraysta
remove-metodilla poistetaan Arrayn tietyssä indeksissä oleva alkio.
var shoppingList = ["Apple", "Cherry", "Cheese"]
let shoppingListOne = shoppingList.remove(at: 0)
// the item that was at index 0 has just been removed
// the mapleSyrup constant is now equal to the removed "Maple Syrup" string
let shoppingListTwo = shoppingList.removeLast()
// the last item in the array has just been removed
print(shoppingListTwo)Taulukon läpikäynti
Voimme käydä hallussamme olevan taulukon läpi for-in-lauseella.
Tutustutaan esimerkkiin.
var shoppingList = ["Banana", "Orange", "Milk"]
for item in shoppingList {
print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas
for (index, value) in shoppingList.enumerated() {
print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas
Setit
Niitä käytetään saman tyypin arvojen kokoamiseen yhteen ilman järjestystä.
Kuten nimestä voi päätellä, kyseessä on joukko. Joukossa ei voi olla kahta samaa arvoa.
Tyhjän Setin luominen
Tyhjä Set luodaan seuraavan esimerkin avulla.
var catSet = Set<Character>()Setien luominen taulukkoliteraalilla
Set voidaan luoda taulukkoliteraalilla. Huomaa, että vaikka tähän sijoitettu arvo näyttää taulukolta, muuttujan tyyppi on Set <String>.
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]Varoitus
Taulukkoliteraalia käytettäessä Setiä ei voi luoda määrittelemättä tyyppiä. Muuten se voidaan tulkita Arrayksi. Siksi tyyppi on määritettävä.
Vähintään se on kirjoitettava seuraavasti.
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]Setin metodit
Tutustutaan esimerkkiin
var favoriteGenres = ["Funk"]
print("I have \(favoriteGenres.count) favorite music genres.")
if favoriteGenres.isEmpty {
print("favoriteGenres is empty")
} else {
print("I have particular music preferences.")
}
if favoriteGenres.contains("Funk") {
print("Funk")
} Setin läpikäynti
Swiftin Set-tyypillä ei ole järjestystä. Set-arvoja läpikäytäessä voidaan kuitenkin käyttää sorted-metodia. Tämä metodi muuntaa Setin alkiot taulukoksi.
let favoriteGenres = ["Classical","Jazz", "Hip hop"]
for genre in favoriteGenres {
print("\(genre)")
}
// Classical
// Jazz
// Hip hopDictionary
Dictionary on kokoelmatyyppi, joka säilyttää arvot avain–arvo-pareina eikä sisällä järjestystä.
Jokainen arvo tallennetaan yksilöllisen avaimen kanssa. Avain toimii kyseisen Dictionary-arvon tunnisteena. Dictionary ei sisällä Arrays-tyyppistä järjestystä. Sitä voi ajatella tosielämän sanakirjan tavoin.
Siksi jokaisen arvon tunniste on järjestystä tärkeämpi.
Dictionary-tyyppi voidaan määritellä lyhyellä muodolla [Key: Value]. Lyhyttä muotoa käytetään mieluummin.
var namesOfIntegers = [Int: String]()
// namesOfIntegers is an empty [Int: String] dictionary
namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type [Int: String]Dictionaryn käyttömetodit
Dictionaryn sisältämien alkioiden määrän voi selvittää count-metodilla.
Lisäksi Dictionaryn tyhjyyden voi tarkistaa isEmpty-metodilla.
Tehdään näistä metodeista muutama esimerkki.
var airports = ["LHR": "London", "IST": "Istanbul"]
print("The airports dictionary contains \(airports.count) items.")
// Prints "The airports dictionary contains 2 items."
if airports.isEmpty {
print("The airports dictionary is empty.")
} else {
print("The airports dictionary is not empty.")
}
// Prints "The airports dictionary is not empty."
airports["LHR"] = "London"
// the airports dictionary now contains 3 itemsSubscript
Subscriptin avulla arvo haetaan seuraavasti. Palautettava tulos on optional.
var airports = ["DUB":"Dublin"]
if let airportName = airports["DUB"] {
print("The name of the airport is \(airportName).")
} else {
print("That airport is not in the airports dictionary.")
}
// Prints "The name of the airport is Dublin Airport."
//Deletion
airports["APL"] = nil
if let removedValue = airports.removeValue(forKey: "DUB") {
print("The removed airport's name is \(removedValue).")
} else {
print("The airports dictionary does not contain a value for DUB.")
}
// Prints "The removed airport's name is Dublin Airport."
Dictionaryn päivittäminen
Edellä käytetyn subscriptin lisäksi Dictionaryn päivittämiseen on olemassa oma metodi.
Tämän metodin erityispiirre on, että päivityksen jälkeen se palauttaa arvon, joka oli voimassa ennen päivitystä.
var airports = ["DUB": "Dublin"]
if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
print("The old value for DUB was \(oldValue).")
}
// Prints "The old value for DUB was Dublin."
Esimerkki Dictionaryn muuntamisesta Arrayksi
Alla on esimerkki Dictionaryn muuntamisesta Arrayksi.
let airports = ["IST":"Istanbul Airport", "DUB":"Dublin Airport"]
let airportCodes = [String](airports.keys)
print(airportCodes)
let airportNames = [String](airports.values)
print(airportNames)Onnittelut
Onnittelut 🎉
Tässä oppitunnissa opimme käyttämään kokoelmia Swiftissä.
Nähdään seuraavassa oppitunnissa.

Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”Kokoelmat” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Kokoelmat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 1 oppituntia.
Mitä opin oppitunnilla ”Kokoelmat”?
Kokoelmat Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/1.
Kuinka kauan ”Kokoelmat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.