Swift Academy · Oppitunti

Jäsenkohtaiset alustajat ja mukautetut init-alustajat

Tutustukaa automaattisesti luotuihin jäsenkohtaisiin init-alustajiin ja mukautettujen alustajien kirjoittamiseen.

Oppitunti 1/412 vaihetta

Jäsenkohtaiset alustajat ja mukautetut init-alustajat on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. 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ä 4 oppituntia.

Tervetuloa

Swiftin struct-rakenteet saavat automaattisesti *jäsenkohtaisen alustajan*, joka hyväksyy kaikki tallennetut ominaisuudet. Voitte kuitenkin mukauttaa sitä tai täydentää sitä omalla alustamislogiikallanne.

Automaattisesti luotu jäsenkohtainen init

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` Init-metodia ei tarvitse kirjoittaa itse — kääntäjä tarjoaa sen automaattisesti.

Mukautetun initin lisääminen

```swift struct Circle { var radius: Double var area: Double init(radius: Double) { self.radius = radius self.area = .pi * radius * radius } } let c = Circle(radius: 5.0) ```

Jäsenkohtaisen initin säilyttäminen

Mukautetun initin määrittäminen estää automaattisesti luodun jäsenkohtaisen initin. Jos haluat säilyttää molemmat, sijoita mukautettu init extension-laajennukseen: ```swift struct Rect { var width: Double; var height: Double } extension Rect { init(square side: Double) { self.init(width: side, height: side) } } // Both Rect(width:height:) and Rect(square:) available ```

Ominaisuuksien oletusarvot

```swift struct Config { var debug = false var maxRetries = 3 var timeout: TimeInterval = 30 } let c1 = Config() // all defaults let c2 = Config(debug: true) // memberwise with overrides ```

Alustajan delegointi self.initillä

```swift struct Temperature { var celsius: Double init(celsius: Double) { self.celsius = celsius } init(fahrenheit: Double) { self.init(celsius: (fahrenheit - 32) / 1.8) } init(kelvin: Double) { self.init(celsius: kelvin - 273.15) } } ```

Epäonnistuvat alustajat

```swift struct Percentage { let value: Double init?(_ value: Double) { guard (0...100).contains(value) else { return nil } self.value = value } } let p = Percentage(105) // nil ```

Alustus tarkistuksella

```swift struct Username { let value: String init?(_ raw: String) { let trimmed = raw.trimmingCharacters(in: .whitespaces) guard trimmed.count >= 3 else { return nil } self.value = trimmed } } ```

Structin init verrattuna luokan initiin

Tärkeät erot luokkien alustajiin verrattuna: • Structit voivat delegoida alustuksen `self.init()`-kutsulla • Structit eivät peri alustajia (ei `super.init()`-kutsua) • Kaikki tallennetut ominaisuudet on alustettava ennen käyttöä • `required`- tai `designated` / `convenience`-avainsanoja ei ole

init(from decoder:) -esikatselu

`Decodable`-protokollan toteuttavat structit saavat automaattisen initin: ```swift struct User: Decodable { let name: String let age: Int } // Auto-synthesised init(from:) for JSON decoding let user = try JSONDecoder().decode(User.self, from: json) ```

Pikatarkistus

Mihin mukautettu init pitäisi sijoittaa, jotta automaattisesti luotu jäsenkohtainen init säilyy?

Kertaus

Tärkeimmät opit: • Structit saavat kääntäjältä automaattisesti jäsenkohtaisen initin • Structin rungossa määritetyt mukautetut initit estävät jäsenkohtaisen initin luonnin • Sijoita mukautetut initit extension-laajennuksiin, jotta saat pitää molemmat • Delegoi alustajien välillä käyttämällä `self.init()`-kutsua • Epäonnistuvat initit palauttavat `nil`-arvon virheellisellä syötteellä Seuraavaksi: tallennetut ominaisuudet ja ominaisuuksien observerit.
Aloita maksutta

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 ”Jäsenkohtaiset alustajat ja mukautetut init-alustajat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Jäsenkohtaiset alustajat ja mukautetut init-alustajat”. 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ä 4 oppituntia.

Mitä opin oppitunnilla ”Jäsenkohtaiset alustajat ja mukautetut init-alustajat”?

Tutustukaa automaattisesti luotuihin jäsenkohtaisiin init-alustajiin ja mukautettujen alustajien kirjoittamiseen. 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/4.

Kuinka kauan ”Jäsenkohtaiset alustajat ja mukautetut init-alustajat”-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.

Kaikki tämän kurssin oppitunnit

  1. Jäsenkohtaiset alustajat ja mukautetut init-alustajat
  2. Tallennetut ominaisuudet ja ominaisuustarkkailijat
  3. Lasketut ominaisuudet rakenteissa
  4. Muuttavat metodit ja copy-on-write-semanttiikka
← Takaisin: Swift Academy