..


Rėmėjų nuorodos

Naudoti mixins Ruby

Straipsnį parašė Alessio Saltarini
Puslapis 1 iš 2

Kartais jūs norite sukurti objektai, kurie "tai" funkcija klasės, bet ir "tai" ir "tai kiti", kurie galbūt jau parašyta kitur mūsų kodą.

Kitaip tariant, mes norime sukurti klasės, kad skolinasi metodus ir savybes, apibrėžtas kitose kodo arba kai biblioteka.

Priešingai, mes turėtume surinkti apie pačias funkcijas mūsų kodą vienoje vietoje prieinamą visiems. Kaip?

Puristų yra pasibaisėjusi Objektinis programavimas ir palaikymas - mano nuomone, nėra visiškai be priežasties - kad kiekvienas šio tipo reikia, gali būti išspręsta tinkamai naudoti polimorfizmas.

Kiti, ypač jei jie kilę iš patirties kalbų kaip C + +, teigia, kad būtent dėl ​​šių reikalavimų naudojant keletą paveldėjimo.

Pragmatinė kalbų, pavyzdžiui, Ruby, tačiau spręsti šį klausimą suteikiant technika vadinama "Mixin" pavadinimas - tai skamba! - Ledų žmogus davė jai Massuchussets sudaro įvairių ledų skonio (grietinėlės, šokolado ...)

Ruby mixins

Techniškai, Ruby mixins yra įgyvendinamos naudojant per klases, kodu, apibrėžtu skirtingus modulius (modulis).

Siekiant atsižvelgti trivialus pavyzdys, tarkime, kad aš norėjau įgyvendinti žodį procesorių, kuris automatiškai spausdinti mano patogumas verslo laišką. Kadangi jūs norite įvesti tik reikalingus duomenis, ty gavėjo ir pranešimą. Programa bus galvoti skirtingų draugiškas, pavyzdžiui, "seras" ir "Pagarbiai".

Pradėkime nustatant ir patogiu būdu:






 modulis CordialitaLettera



    



 def pradžios (adresas)



        



 grįžti "Dear Mr." + gavėjas + "\ n"



    



 pabaiga



    



 galutinis parašas (raidė)



        



 atsakomajame laiške + "\ n" + "Pagarbiai, \ nCarlo Smith"



    



 pabaiga







 pabaiga



Jokia kita ko, tada tik du metodus, kuriuos galite pakeisti tekstą gavo kaip pirkimo.

Leiskite rašyti klasės "mišrios" šių metodų, tik Mixin:






 Class



    



 apima CordialitaLettera



    



 galutinis stampaLettera (gavėjui, pranešimą)



        



 = Pradžios tašką (imtuvas)



        



 = Raidė + Paskelbkite



        



 kelia parašą (raidė)



    



 pabaiga







 pabaiga



Raidės virš klasė turi metodą, kad mano, kaip įvesti tik kintamojo dalių laišką, su draugiška formatu apibrėžtas modulis.

Kaip matote sintaksė yra gana panaši į paveldėjimo Ruby, tačiau, skirtingai nuo pastarojo, kad klasė gali įgyvendinti bet kurį formų skaičius - ir, žinoma, klasės gali būti gauta iš ir tik vienas iš tėvų klasė (Ruby nepalaiko kelių paveldėjimo!)

Pavyzdžiui, mes galime parašyti:






 def main ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ("Alessio Saltarini"



                          



 "Aš ką tik pradėjo perdavimo



                           



 prašėte. ')



    



 kelia



    



 lEngine.stampaLettera ("Mato Pisconi"



                          



 "Aš siunčia faksu nr.038283873. ')







 pabaiga



kuri grąžina:





 Gerbiami sig.Alessio Saltarini,







 Aš ką tik padaryta perdavimo prašėte.







 Pagarbiai,







 Carlo Rossi








 Gerbiami sig.Matteo Pisconi,







 Galiu siųsti faksu nr.038283873.







 Pagarbiai,







 Carlo Rossi



Šis metodas, be kita ko, leidžia įsisavinti apie mixins kad sąsajas Java naudoti: iš tiesų, jei klasėje yra "maišymo" su forma, tai ji įgyvendins metodus (ir todėl atitinka tam tikrą sąsają) .

Tos pačios kategorijos ...
E-mokymasis
Ruby ir Ruby on Rails (kurso) Ruby ir Ruby on Rails (kurso)
Sukurti programinę įrangą ir interneto programų su Ruby ir RoR. Nuo 39 €.
Rėmėjų nuorodos