Instantimine ja initsialiseerimismeetod

click fraud protection

01

alates 02

Instantimine ja initsialiseerimismeetod

Ruby on Rails õppimine: irbiga mängimine
brnzwngs / Flikr / CC BY 2.0

Ruby klassi määratlemisel määrab Ruby klassile uue klassiobjekti klassi nime konstant. Näiteks kui sa peaksid ütlema klassi inimene; lõpp, see on umbes samaväärne Isik = Klass.uue. Selle klassi objekt on seda tüüpi Klassja omab mitmeid meetodeid, mis on kasulikud nendest eksemplaridest koopiate tegemiseks.

02

alates 02

Juhtumite tegemine

Klassi uue eksemplari loomiseks helistage selle klassi numbritele uus meetod. Vaikimisi eraldab see klassile vajaliku mälu ja tagastab viite uuele objektile. Niisiis, kui peaksite tegema uue eksemplari Isik klassi, siis helistaks Isik.uue.

Ehkki alguses tundub see natuke tagurpidi, seda pole uus märksõna Ruby'is või mõni spetsiaalne süntaks. Uute objektide loomiseks kasutatakse tavalist meetodit, mis teeb kõik öelduna suhteliselt lihtsad asjad.

Juhtumite initsialiseerimine

Tühi objekt pole eriti põnev. Objekti kasutamise alustamiseks tuleb see kõigepealt lähtestada (eeldades, et sellel on mõni)

instagram viewer
esinemismuutujad mis vajab lähtestamist). Seda tehakse programmi kaudu lähtestama meetod. Ruby edastab kõik argumendid, millele olete jõudnud SomeClass.new edasi lähtestama uue objekti peal. Seejärel saate kasutada objekti oleku lähtestamiseks tavalisi muutujate määramisi ja meetodeid. Selles näites a Isik klass on esitatud kelle lähtestama meetod võtab nime ja vanuse argumendi ning seab need esinemismuutujatele.

klass Isiku def lähtestada (nimi, vanus) @ nimi, @age = nimi, vanuse lõpp lõpp bob = Person.new ('Bob', 34)

Seda võimalust saate kasutada ka vajalike ressursside hankimiseks. Avatud võrk pistikupesad, failide avamine, vajalike andmete lugemine jne. Ainus hoiatus on see, mida inimesed tavaliselt ei oota lähtestama meetodid ebaõnnestuvad. Dokumenteerige kindlasti kõik võimalikud tõrked lähtestama meetodeid põhjalikult.

Objektide sihtimine

Üldiselt ei hävita te Rubinis esemeid. Kui tulete C ++-st või muust keelest ilma prügivedajata, võib see tunduda kummaline. Kuid Ruby (ja enamiku muude prügikogutud keelte) puhul ei hävita te esemeid, vaid lõpetate lihtsalt sellele viitamise. Järgmisel prügikoristustsükkel hävitatakse automaatselt kõik objektid, millele pole midagi viita. Leidub ümmarguste viidetega vigu, kuid üldiselt töötab see veatult ja te ei vaja isegi hävitajat.

Kui teil on ressursside kohta huvi, ärge muretsege selle pärast. Kui ressurssi hoidev objekt hävitatakse, vabaneb ressurss. Avatud failid ja võrguühendused suletakse, mälu eraldatakse jne. Ainult siis, kui eraldate C-laiendis ressursse, peate ressursside jaotamise pärast muretsema. Ehkki prügiveo ajamine pole tagatud. Ressursside jaotamiseks a õigeaegne viisil, proovige neid käsitsi vabastada.

Objektide koopiate tegemine

Rubiin on möödasõidul. Kui annate objektile viite a meetodja see meetod kutsub meetodiks, mis muudab selle objekti olekut, võivad tekkida soovimatud tagajärjed. Lisaks saavad meetodid salvestada viite objektile, et seda modifitseerida palju hiljem, põhjustades vea edasilükkunud efekti. Selle vältimiseks pakub Ruby mõnda meetodit objektide dubleerimiseks.

Mis tahes objekti kopeerimiseks helistage lihtsalt numbrile some_object.dup meetod. Eraldatakse uus objekt ja kõik objekti esinemismuutujad kopeeritakse üle. Kuid eksemplaride muutujate kopeerimist pidi see vältima: seda nimetatakse "pinnapealseks koopiaks". Kui pidite faili hoidma näiteks muutuja korral, viitavad mõlemad dubleeritud objektid nüüd samale faili.

Enne kui soovite, jälgige, et koopiad on madalad dup meetod. Vaadake artiklit Ruby-s sügavate koopiate tegemine rohkem informatsiooni.

instagram story viewer