Meetod "Nõua" rubiinides

click fraud protection

Korduvkasutatavate komponentide loomiseks, mida saab hõlpsalt kasutada teistes programmides, peab programmeerimiskeelel olema võimalus seda koodi sujuvalt importida töö ajal. Sisse Rubiin, nõuda meetodit kasutatakse teise faili laadimiseks ja kogu selle täitmiseks avaldused. See tähendab kõigi klasside ja klasside importimist meetod definitsioonid failis. Lisaks kõigi failis sisalduvate avalduste täitmisele jälgib nõudmismeetod ka seda, milliseid faile on varem nõutud ja seega ei vaja ta faili kaks korda.

'Nõua' meetodi kasutamine

Nõudemeetod võtab vajaliku faili nime kui a nöör, ühe argumendina. See võib olla tee failini, näiteks ./lib/some_library.rb või lühendatud nimi, näiteks mõned_raamatud. Kui argument on tee ja täielik failinimi, otsib nõutav meetod sinna faili. Kui argument on aga lühendatud nimi, otsib nõutav meetod teie süsteemis selle faili hulga etteantud kataloogidest. Lühendatud nime kasutamine on nõutava meetodi kasutamise kõige tavalisem viis.

Järgmine näide näitab, kuidas nõude lauset kasutada. Toimik

instagram viewer
test_raamatukogu.rb on esimeses koodiplokis. See fail prindib teate ja määratleb uue klassi. Teine koodiplokk on fail test_program.rb. See fail laadib test_raamatukogu.rb faili kasutades sealquiremethodi ja loob uue TestClass objekt.

paneb "test_raamatukogu kaasa"
klass TestClass
def lähtestama
paneb "TestClass objekt loodud"
lõpp
lõpp
#! / usr / bin / env rubiin
nõuda 'test_library.rb'
t = TestClass.new

Vältige nime kokkupõrkeid

Korduvkasutatavate komponentide kirjutamisel on kõige parem mitte deklareerida paljusid muutujaid globaalses ulatuses väljaspool ühtegi klassi või meetodit või kasutades $ eesliide. Selle eesmärk on ära hoida nn.nimeruumi reostus"Kui kuulutate liiga palju nimesid, võib mõni muu programm või teek kuulutada sama nime ja põhjustada nime kokkupõrke. Kui kaks täiesti sõltumatut raamatukogu hakkavad kogemata teineteise muutujaid muutma, lähevad asjad katki - näiliselt juhuslikult. See on väga raske viga leida ja seda on kõige parem vältida.

Nimi kokkupõrgete vältimiseks saate kogu oma raamatukogus sisestada a-kirja kõik moodul avaldus. See nõuab, et inimesed viitaksid teie klassidele ja meetodile täielikult kvalifitseeritud nime, näiteks MyLibrary:: my_method, kuid see on seda väärt, kuna nime kokkupõrkeid tavaliselt ei esine. Inimeste jaoks, kes soovivad, et kõik teie klassi- ja meetodinimed oleksid globaalses ulatuses, saavad nad seda teha, kasutades sisaldama avaldus.

Järgmine näide kordab eelmist näidet, kuid ümbritseb kõike a-ga MyLibrary moodul. Programmi kaks versiooni minu_programm.rb on antud; üks, mis kasutab sisaldama avaldus ja üks, mis seda ei tee.

paneb "test_raamatukogu kaasa"
moodul MyLibrary
klass TestClass
def lähtestama
paneb "TestClass objekt loodud"
lõpp
lõpp
lõpp
#! / usr / bin / env rubiin
nõuda 'test_library2.rb'
t = MyLibrary:: TestClass.new
#! / usr / bin / env rubiin
nõuda 'test_library2.rb'
lisada MyLibrary
t = TestClass.new

Vältige absoluutseid teid

Kuna korduvkasutatavaid komponente liigutatakse sageli, on ka parem mitte kasutada nõutud kõnedes absoluutseid teid. Absoluutne tee on tee nagu /home/user/code/library.rb. Võite märgata, et toimimiseks peab fail asuma täpselt selles kohas. Kui skript on kunagi teisaldatud või kui teie kodukataloog kunagi muutub, siis ei nõua see väljavõtte töö.

Absoluutsete teede asemel on sageli tavaline luua a ./lib kataloog teie Ruby programmi kataloogis. ./lib kataloog lisatakse kataloogi LOAD_PATH muutuja, mis salvestab kataloogid, kus nõutav meetod otsib Ruby-faile. Pärast seda, kui fail my_library.rb on salvestatud lib-kataloogi, selle saab oma programmi laadida lihtsaga nõuda 'minu_raamatukogu' avaldus.

Järgmine näide on sama, mis eelmine test_program.rb näited. Siiski eeldatakse: test_raamatukogu.rb fail salvestatakse ./lib kataloogi ja laadib selle ülalkirjeldatud meetodil.

#! / usr / bin / env rubiin
$ LOAD_PATH << './lib'
nõuda 'test_library.rb'
t = TestClass.new
instagram story viewer