Swift-sulkemiset

mainokset

sulkeumat Swift 4: ssä ovat samanlaisia kuin omatoimiset funktiot, jotka on järjestetty lohkoiksi ja joita kutsutaan missä tahansa, kuten C-ja Objective C-kielissä. Funktioiden sisällä määritellyt vakiot ja muuttujat otetaan talteen ja tallennetaan sulkuihin. Toimintoja pidetään sulkemistapauksina, ja ne ovat seuraavat kolme muotoa−

Yleisfunktiot sisäkkäiset funktiot Sulkulausekkeet
kerro nimi. Älä tallenna mitään arvoja , joilla on nimi. Capture values from enclosing function named closes capture values from the necessary blocks

sulkeminen lausekkeet Swift 4 kieli seuraa teräviä, optimointi, ja kevyt syntaksi tyylejä, joka sisältää.

  • päättelevät parametri-ja palautusarvotyypit kontekstista.
  • implisiittinen tuotto yhden lausekkeen sulkemisista.
  • pika-argumenttien nimet ja
  • perään Sulkeutuva syntaksi

syntaksi

Seuraavassa on yleinen syntaksi sulkemisen määrittelemiseksi, joka hyväksyy parametrit ja palauttaa tietotyypin−

{ (parameters) −> return type in statements}

seuraava on yksinkertainen esimerkki−

let studname = { print("Welcome to Swift Closures") }studname()

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

Welcome to Swift Closures

Seuraava sulkeminen hyväksyy kaksi parametria ja palauttaa Bool-arvon−

{ (Int, Int) −> Bool in Statement1 Statement 2 --- Statement n}

seuraava on yksinkertainen esimerkki−

let divide = { (val1: Int, val2: Int) -> Int in return val1 / val2 }let result = divide(200, 20)print (result)

kun suoritamme edellä ohjelma playground, saamme seuraava tulos−

10

sulkujen

sisäkkäisten funktioiden lausekkeet tarjoavat kätevän tavan nimetä ja määritellä koodilohkoja. Sen sijaan, että se edustaisi koko funktion julistusta ja nimikonstruktioita käytetään kuvaamaan lyhyempiä funktioita. Funktion esittäminen selkeässä lyhyessä lauseessa tarkennetulla syntaksilla saavutetaan sulkulauseilla.

Ascending Order Program

merkkijonon lajittelu tapahtuu Swift 4s key reserved-funktiolla ”lajiteltu”, joka on jo saatavilla standardikirjastossa. Funktio lajittelee annetut merkkijonot nousevaan järjestykseen ja palauttaa elementit uuteen taulukkoon, jolla on sama koko ja tietotyyppi, joka on mainittu vanhassa taulukossa. Vanha array pysyy samana.

järjestetyn funktion sisällä on kaksi argumenttia−

  • tunnetun tyypin arvot esitetään taulukoina.

  • Array sisältö (Int, Int) ja palauttaa Boolen arvo (Bool) jos array on järjestetty oikein se palauttaa todellisen arvon muuten se palaa false.

normaali funktio, jossa on tulomerkkijono, kirjoitetaan ja siirretään lajiteltuun funktioon, jotta merkkijonot lajitellaan uuteen jonoon, joka on esitetty alla−

func ascend(s1: String, s2: String) -> Bool { return s1 > s2}let stringcmp = ascend(s1: "Swift 4", s2: "great")print (stringcmp)

kun suoritamme edellä ohjelma playground, saamme seuraavat tulokset−

true

icecreamille lajiteltavat alkurivit ovat ”Swift 4″ja ” great”. Funktio lajitella array on ilmoitettu merkkijono datatype ja sen return tyyppi on mainittu boolean. Molemmat jouset vertaillaan ja lajitellaan nousevaan järjestykseen ja tallennetaan uuteen rivistöön. Jos lajittelu suoritetaan onnistuneesti funktio palauttaa todellisen arvon, se palauttaa false.

Sulkemisilmaisun syntaksin käyttö−

  • vakioparametrit,
  • muuttuvatparametrit ja
  • muuttumattomat parametrit.

Sulkulauseke ei tukenut oletusarvoja. Variadisia parametreja ja Tupleja voidaan käyttää myös parametrityyppeinä ja paluutyyppeinä.

let sum = { (no1: Int, no2: Int) -> Int in return no1 + no2 }let digits = sum(10, 20)print(digits)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

30

funktiolausekkeessa mainitut parametrit ja palautustyyppiilmoitukset voidaan esittää myös inline closure expression-funktiolla avainsanalla ”in”. Kun parametri-ja palautustyyppien ilmoittaminen ” in ” – avainsanalla tarkoitetaan sitä, että sulkemiskohde on.

yhden lausekkeen implisiittinen palautus

tässä lajitellun funktion toisen argumentin funktiotyyppi tekee selväksi, että bool-arvo on palautettava sulkemalla. Koska päätteen runko sisältää yhden lausekkeen (s1 > s2), joka palauttaa Bool-arvon, ei ole epäselvyyttä, ja palautussana voidaan jättää pois.

yhden lausekkeen palauttamisesta lausekkeessa suljetut ”palautus” – hakusana on jätetty pois sen ilmoitusosasta.

var count: = let descending = count.sorted(by: { n1, n2 in n1 > n2 })let ascending = count.sorted(by: { n1, n2 in n1 < n2 })print(descending)print(ascending)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−


lausuma itse määrittelee selvästi, että kun string1 on suurempi kuin merkkijono 2 return true muuten false siis return lausuma jätetään pois tässä.

tunnetut Sulkutyypit

harkitaan kahden luvun yhteenlaskua. Tiedämme, että yhteenlasku palauttaa kokonaisluku datatype. Näin ollen tunnetut sulkemiset ilmoitetaan seuraavasti:−

let sub = { (no1: Int, no2: Int) -> Int in return no1 - no2 }let digits = sub(10, 20)print(digits)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

-10

pika-argumenttien nimien julistaminen Sulkemisiksi

Swift 4 Antaa automaattisesti pika-argumenttien nimet sulkemisille, joilla voidaan viitata sulkemisen argumenttien arvoihin nimillä $0, $1, $2 ja niin edelleen.

var shorthand: (String, String) -> Stringshorthand = {  }print(shorthand("100", "200"))

tässä $0 ja $1 viittaavat sulkemisen ensimmäisen ja toisen rivin argumentteihin.

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

200

Swift 4 helpottaa käyttäjä esittää Inline sulkemiset pikakirjoituksella argumenttien nimet edustamalla $0, $1, $2 — $n.

Sulkuargumenttiluettelo jätetään pois määrittelyosiosta, kun esitämme pikakirjoitusargumenttien nimiä sulkuilmaisujen sisällä. Funktiotyypin perusteella saadaan pika-argumenttien nimet. Koska pikakirjoitusargumentti on määritelty lausekkeessa, ” in ” – avainsana jätetään pois.

sulkemiset Operaattoritoimintoina

Swift 4 tarjoaa helpon tavan päästä käsiksi jäseniin pelkästään tarjoamalla operaattoritoimintoja sulkemisina. Edellisissä esimerkeissä hakusanaa ”Bool” käytetään palauttamaan joko ”tosi”, kun merkkijonot ovat yhtä suuret, muuten se palauttaa ”epätosi”.

lausekkeen tekee vielä yksinkertaisemmaksi operaattorifunktio sulkemalla−

let numb = var sortedNumbers = numb.sorted ({ (left: Int, right: Int) -> Bool in return left < right})let asc = numb.sorted(<)print(asc)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−


sulkemiset, kun Perävaunu

siirtää toiminnon viimeisen argumentin sulkemislausekkeeseen, ilmoitetaan ”perään sulkemiset” – lausekkeen avulla. Funktion () ulkopuolelle kirjoitetaan {}. Sen käyttöä tarvitaan, kun funktiota ei ole mahdollista kirjoittaa inline yhdelle riville.

reversed = sorted(names) {  > }

missä {$0 > $1} esitetään ulkopuolella ilmoitettuina lopetuksina (nimet).

import Foundationvar letters = let twoletters = letters.map({ (state: String) -> String in return state.substringToIndex(advance(state.startIndex, 2)).uppercaseString})let stletters = letters.map() { .substringToIndex(advance(.startIndex, 2)).uppercaseString }print(stletters)

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−


Capturing Values and Reference Types

in Swift 4, capturing Values and variables values is done with the help of closes. Se viittaa ja muuttaa näiden vakioiden ja muuttujien arvoja sulkukohdan sisällä, vaikka muuttujia ei enää ole olemassa.

vakio-ja muuttujaarvojen kuvaaminen saadaan aikaan sisäkkäisen funktion avulla kirjoittamalla funktio muiden funktioiden joukkoon.

sisäkkäinen funktio kaappaa−

  • Ulkofunktion argumentit.
  • kuvaa Ulkofunktion sisällä määriteltyjä vakioita ja muuttujia.

Swift 4: ssä, kun funktion sisällä ilmoitetaan vakio tai muuttuja, myös viittaukset näihin muuttujiin syntyvät automaattisesti sulkemalla. Se tarjoaa myös mahdollisuuden viitata useampaan kuin kahteen muuttujaan samalla sulkemisella seuraavasti−

let decrem = calcDecrement(forDecrement: 18)decrem()

tässä oneDecrement-ja Decrement-muuttujat osoittavat molemmat saman muistilohkon kuin closure-viite.

func calcDecrement(forDecrement total: Int) -> () -> Int { var overallDecrement = 100 func decrementer() -> Int { overallDecrement -= total print(overallDecrement) return overallDecrement } return decrementer}let decrem = calcDecrement(forDecrement: 18)decrem()decrem()decrem()

kun suoritamme edellä mainitun ohjelman playground-ohjelmalla, saamme seuraavan tuloksen−

826446

kun joka kerta ulkofunktiota kalsdekrementiksi kutsutaan, se laskuttaa funktion decrementer() ja määrää arvon 18: lla ja palauttaa tuloksen ulomman funktion kalsdekrement avulla. Tässä calcDecrement toimii sulkemisena.

vaikka funktion dekrementerillä() ei oletusarvoisesti ole mitään argumentteja, se viittaa muuttujiin ”overallDecrement” ja ”total” kuvaamalla sen olemassa olevat arvot. Määritettyjen muuttujien arvojen kopiot tallennetaan new decremener () – funktiolla. Swift 4 käsittelee muistinhallintatoimintoja allokoimalla ja deallocoimalla muistiavaruuksia silloin, kun muuttujat eivät ole käytössä.

mainokset