Iniciacija ir inicijavimo metodas

01

iš 02

Iniciacija ir inicijavimo metodas

Ruby on Rails mokymasis: Žaidimas su irb
brnzwngs / Flikr / CC BY 2.0

Kai „Ruby“ apibrėžsite klasę, „Ruby“ priskirs naują klasės objektą klasės vardo konstanta. Pvz., Jei būtų sakoma klasės asmuo; galas, tai maždaug atitinka Asmuo = klasė.naujas. Šios klasės objektas yra tokio tipo Klasė, ir turi daugybę metodų, naudingų taisant egzempliorius.

02

iš 02

Atvejų kūrimas

Norėdami sukurti naują klasės egzempliorių, paskambinkite tai klasei nauja metodas. Pagal numatytuosius nustatymus tai paskirs reikiamą klasės atmintį ir grąžins nuorodą į naują objektą. Taigi, jei norėtumėte padaryti naują pavyzdį Asmuo klasė, jūs paskambintumėte Asmuo.naujas.

Nors iš pradžių tai atrodo šiek tiek atgal, nėra nauja raktinis žodis „Ruby“ ar bet kokia speciali sintaksė. Nauji objektai sukuriami įprastu metodu, kuris, sakydamas ir padaręs, daro gana paprastus dalykus.

Inicijuoti egzempliorius

Tuščias objektas nėra labai jaudinantis. Norint pradėti naudoti savo objektą, pirmiausia reikia jį inicijuoti (darant prielaidą, kad jis turi

instagram viewer
egzempliorių kintamieji kad reikia pradėti). Tai atliekama per inicijuoti metodas. „Ruby“ perduos visus argumentus, kuriuos jums perdavė „SomeClass.new“ į inicijuoti ant naujo objekto. Tada galite naudoti įprastas kintamąsias užduotis ir metodus, norėdami inicijuoti objekto būseną. Šiame pavyzdyje a Asmuo klasė pristatoma, kurios inicijuoti metodas paims vardo ir amžiaus argumentą ir priskirs juos egzempliorių kintamiesiems.

klasė asmens def inicializacija (vardas, amžius) @ vardas, @age = vardas, amžiaus pabaiga pabaiga bob = Person.new ('Bob', 34 m.)

Šia galimybe taip pat galite naudotis norėdami įsigyti bet kokius išteklius, kurių jums gali prireikti. Atviras tinklas lizdai, atidarykite failus, skaitykite visus reikalingus duomenis ir pan. Vienintelis įspėjimas yra tas, kad žmonės paprastai nesitiki inicijuoti metodai žlugti. Nepamirškite dokumentuoti visų galimų nesėkmių inicijuoti metodai kruopščiai.

Paskirties objektai

Apskritai, tu nenaikini daiktų „Ruby“. Jei atvykstate iš C ++ ar kitos kalbos be šiukšlių surinkėjo, tai gali atrodyti keista. Tačiau „Ruby“ (ir daugelyje kitų šiukšlių surinktų kalbų) nenaikinate daiktų, tiesiog nustojate apie tai remtis. Kitame šiukšlių rinkimo cikle bet koks objektas, neturintis nieko apie tai, bus sunaikintas automatiškai. Yra keletas klaidų su žiedinėmis nuorodomis, tačiau paprastai tai veikia nepriekaištingai ir jums net nereikia „naikintojo“.

Jei įdomu apie išteklius, nesijaudinkite. Kai sunaikinamas išteklius laikantis objektas, ištekliai bus išlaisvinti. Atidaryti failai ir tinklo jungtys bus uždaryti, atmintis paskirstyta ir pan. Tik paskirstę išteklius C plėtinyje, jums tikrai reikės jaudintis dėl išteklių paskirstymo. Nors nėra garantijos, kada šiukšlių surinkėjas bus paleistas. Norėdami paskirstyti išteklius a laiku būdu, pabandykite juos atlaisvinti rankiniu būdu.

Objektų kopijų darymas

„Ruby“ yra pravažiuojamas. Jei perduodate nuorodą į objektą a metodas, o tas metodas vadinamas metodu, kuris modifikuoja to objekto būseną, gali atsirasti nenumatytų padarinių. Be to, metodai gali išsaugoti nuorodą į objektą, kad būtų galima modifikuoti žymiai vėliau, ir dėl to trikties poveikis gali būti atidėtas. Norėdami to išvengti, „Ruby“ pateikia keletą objektų kopijavimo būdų.

Norėdami kopijuoti bet kurį objektą, tiesiog paskambinkite some_object.dup metodas. Bus paskirtas naujas objektas, o visi objekto egzempliorių kintamieji bus nukopijuoti. Tačiau to reikėjo vengti kopijuojant egzempliorių kintamuosius: tai vadinama „negilia kopija“. Jei turėjote laikyti failą egzemplioriaus kintamajame, abu dubliuoti objektai dabar turėtų nuorodą į tą patį byla.

Tiesiog prieš naudodami. Žinokite, kad kopijos yra negilios dup metodas. Žiūrėti straipsnį „Ruby“ kopijų darymas Daugiau informacijos.