Käynnistys ja alustusmenetelmä

01

02

Käynnistys ja alustusmenetelmä

Ruby on rails oppiminen: leikkiminen irb: lla
brnzwngs / Flikr / CC BY 2.0

Kun määrität luokan Rubyssa, Ruby antaa uuden luokkaobjektin luokan nimi vakio. Esimerkiksi, jos sanot luokan henkilö; pää, tämä on suunnilleen yhtä suuri kuin Henkilö = Luokka.uusi. Tämä luokkaobjekti on tyyppiä luokka, ja hänellä on useita menetelmiä, jotka ovat hyödyllisiä kopioiden valmistamiseksi kyseisistä tapauksista.

02

02

Tapausten tekeminen

Jos haluat luoda uuden luokan esiintymän, soita luokan numeroille Uusi menetelmä. Oletusarvon mukaan tämä varaa luokalle vaaditun muistin ja palauttaa viittauksen uuteen objektiin. Joten, jos teet uuden ilmentymän Henkilö luokka, soittaisit Person.new.

Vaikka aluksi tämä vaikuttaa vähän taaksepäin, niin ei ole Uusi avainsana Rubyssa tai mikä tahansa erityinen syntaksi. Uudet esineet luodaan normaalilla menetelmällä, joka kaikki sanotut ja tehdyt tekevät suhteellisen yksinkertaisia ​​asioita.

Tapahtumien alustaminen

Tyhjä esine ei ole kovin jännittävä. Objektin käytön aloittaminen on ensin alustettava (olettaen, että sillä on mitään)

instagram viewer
esiintymämuuttujat joka on alustettava). Tämä tapahtuu alustaa menetelmä. Ruby välittää kaikki argumentit, joille lähetät SomeClass.new päälle alustaa uudessa esineessä. Voit sitten käyttää normaaleja muuttujien määrityksiä ja menetelmiä objektin tilan alustamiseen. Tässä esimerkissä a Henkilö luokka esitetään jonka alustaa menetelmä ottaa nimi- ja ikäargumentin ja liittää ne esiintymätietoihin.

luokka Henkilö def alustaa (nimi, ikä) @ nimi, @age = nimi, iän loppu loppu bob = Person.new ('Bob', 34)

Voit myös käyttää tätä mahdollisuutta hankkiaksesi tarvitsemiasi resursseja. Avaa verkko pistorasiat, avaa tiedostoja, lue tarvittavat tiedot jne. Ainoa varoitus on se, mitä ihmiset eivät yleensä odota alustaa menetelmät epäonnistuvat. Muista dokumentoida mahdolliset viat alustaa menetelmät perusteellisesti.

Kohteiden määrääminen

Yleensä et tuhoa esineitä Rubyssa. Jos olet kotoisin C ++: sta tai muulta kieleltä ilman roskien kerääjää, tämä saattaa tuntua oudolta. Mutta Rubyn (ja useimpien muiden roskien kerättyjen kielten) yhteydessä et tuhota esineitä, vaan lopetat viittaamisen siihen. Seuraavalla roskienkeräysjaksolla kaikki esineet, joihin ei viitata, hävitetään automaattisesti. Jotkut virheet sisältävät pyöreitä viitteitä, mutta yleensä tämä toimii moitteettomasti eikä sinun tarvitse edes "tuhoajaa".

Jos mietit resursseja, älä murehdi siitä. Kun resurssia pitävä objekti tuhoutuu, resurssi vapautuu. Avoimet tiedostot ja verkkoyhteydet suljetaan, muisti sijoitetaan jne. Vain jos varaat resursseja C-laajennuksessa, sinun on todella huolehdittava resurssien jakamisesta. Jätteiden keräilijää ei kuitenkaan voida taata. Resurssien jakamiseksi a ajankohtainen yritä vapauttaa ne manuaalisesti.

Objektien kopioiden tekeminen

Ruby on ohi viitteellä. Jos välität viittauksen objektiin a menetelmä, ja että menetelmä kutsuu menetelmää, joka muuttaa kohteen tilaa, voi tapahtua tahattomia seurauksia. Lisäksi menetelmät voivat sitten tallentaa viittauksen objektiin modifioitavaksi paljon myöhemmin, aiheuttaen virheen viivästyneen vaikutuksen. Tämän välttämiseksi Ruby tarjoaa joitain menetelmiä objektien kopioimiseksi.

Jos haluat kopioida mitä tahansa objektia, soita some_object.dup menetelmä. Uusi kohde allokoidaan ja kaikki objektin esiintymät muuttuvat kopioidaan. Ilmentymän muuttujien kopioimisen on kuitenkin välttämätöntä välttää: tätä kutsutaan "matalaksi kopioksi". Jos piti pitää tiedostoa esiintymämuuttujassa, molemmat kopioidut objektit viittaavat nyt samaan tiedosto.

Huomaa vain, että kopiot ovat matalia, ennen kuin käytät dup menetelmä. Katso artikkeli Syväkopioiden tekeminen Rubyssa Lisätietoja.