Ҳаёт

Усули "Талаб" дар рубли

Усули "Талаб" дар рубли



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Барои эҷод кардани ҷузъҳои такроран истифодашавандаи, ки онҳоро дар барномаҳои дигар истифода бурдан мумкин аст, забони барномасозӣ бояд роҳи ягонаи ворид кардани рамзро дар вақти корӣ дошта бошад. Дар Руби, талаб мекунад усул барои пур кардани файли дигар ва иҷрои ҳама изҳороти он истифода мешавад. Ин барои ворид кардани тамоми таърифҳои синфӣ ва методӣ дар файл хизмат мекунад. Илова бар иҷрои оддии ҳама изҳорот дар файл, усули талабот инчунин сабт мекунад, ки кадом файлҳо қаблан дархост шуда буданд ва ба ин васила ду маротиба файл талаб намекунад.

Бо истифода аз усули 'талаб'

Усули талабкунӣ номи файлро талаб мекунад, ҳамчун сатр ҳамчун далели ягона. Ин метавонад роҳи роҳ ба файл бошад, масалан ./lib/some_library.rb ё номи кӯтоҳшуда, ба монанди some_library. Агар аргумент роҳ ва номи пурраи файл бошад, методи талабот дар он ҷо файлро ҷустуҷӯ мекунад. Аммо, агар далел номи кӯтоҳшуда бошад, усули дархост тавассути якчанд директорияи пешакӣ муайяншуда дар системаи шумо барои он файл ҷустуҷӯ мекунад. Истифодаи номи кӯтоҳшуда роҳи маъмултарини истифодаи методи дархост аст.

Намунаи зер нишон медиҳад, ки чӣ гуна истифодаи баёнияи талабот истифода мешавад. Файли test_library.rb дар блоки рамзи аввал аст. Ин файл паёмро чоп мекунад ва синфи навро муайян мекунад. Блоки коди дуюм ин файл аст test_program.rb. Ин файл бори test_library.rb файл бо истифодаи усули дархост ва нав месозад TestClass объект.

мегузорад "test_library including"
синфи TestClass
def initialize
мегузорад "объекти TestClass офаридашуда"
Поён
Поён
#! / usr / bin / env ёқут
'test_library.rb' талаб мекунад
t = TestClass.new

Нагузоред, ки номатлуб шавад

Ҳангоми навиштани ҷузъҳои такрории он, беҳтар нест, ки бисёр тағирёбандаҳоро дар миқёси глобалӣ берун аз дарсҳо ё усулҳо ё бо истифода аз он эълом кунед $ префикс. Ин барои пешгирӣ кардани чизе бо номи "ифлосшавии фазо" ном дорад. Агар шумо номҳои аз ҳад зиёд эълом кунед, ягон барнома ё китобхонаи дигар метавонад ҳамон номро эълон кунад ва сабаби бархӯрди номҳо шавад. Вақте ки ду китобхонаи комилан ба ҳам новобаста аз тағирёбандаҳои якдигар ба таври тасодуфӣ оғоз мешаванд, ҳама чиз ба таври тасодуфӣ ба назар хоҳад расид. Ин хатогии хеле душворест барои пайгирӣ кардан ва беҳтар аст, ки пешгирӣ карда шавад.

Барои роҳ надодан ба ихтилофи номҳо, шумо метавонед ҳама чизро дар китобхонаи худ як баёнияи модул гиред. Ин аз мардум талаб мекунад, ки ба синфҳо ва усули шумо бо як номи комилан мувофиқ ба монанди муроҷиат кунанд MyLibrary :: my_method, аммо ин бамаврид аст, зеро ихтилофоти ном умуман рух дода наметавонанд. Барои одамоне, ки мехоҳанд ҳама номҳои классикӣ ва усулии шуморо дар миқёси ҷаҳонӣ дошта бошанд, онҳо метавонанд инро бо истифода аз ин амал иҷро кунанд дар бар мегирад изҳороти.

Мисоли зерин мисоли қаблиро такрор мекунад, аммо ҳама чизро дар a Китобхонаи ман модул. Ду версияи my_program.rb дода мешаванд; яке, ки истифода мебарад дар бар мегирад изҳорот ва касе, ки чунин намекунад.

мегузорад "test_library including"
модули MyLibrary
синфи TestClass
def initialize
мегузорад "объекти TestClass офаридашуда"
Поён
Поён
Поён
#! / usr / bin / env ёқут
'test_library2.rb' талаб мекунад
t = MyLibrary :: TestClass.new
#! / usr / bin / env ёқут
'test_library2.rb' талаб мекунад
дохил MyLibrary
t = TestClass.new

Аз роҳҳои мутлақ канорагирӣ кунед

Азбаски ҷузъҳои аз нав истифодашаванда зуд-зуд ба самт ҳаракат мекунанд, беҳтар аст, ки дар зангҳои талабкардаи шумо роҳҳои мутлақ истифода набаред. Роҳи мутлақ чунин роҳест /home/user/code/library.rb. Шумо аҳамият медиҳед, ки файл бояд дар он макони дақиқ барои кор кардан бошад. Агар скрипт ҳамеша ҷойиваз карда шуда бошад ё директорияи хонаи шумо ҳамеша тағир ёбад, ин изҳорот талаб намекунад.

Ба ҷои роҳҳои мутлақ, одатан эҷоди а ./lib директория дар феҳристи барномаи Ruby. Суратгнрн ТочикТА М. ./lib директория ба. илова карда мешавад $ LOAD_PATH тағирёбандае, ки директорияҳоро нигоҳ медорад, ки дар он усули дархост барои файлҳои Ruby ҷустуҷӯ мекунад. Баъд аз ин, агар файл my_library.rb аст, ки дар директорияи lib сабт шудааст, он метавонад ба барномаи шумо бо содда бор карда шавад 'my_library' талаб мекунад изҳороти.

Мисоли зерин ҳамон аст, ки қабл аз он test_program.rb намунаҳо. Аммо, он гумон мекунад test_library.rb файл дар ./lib директорияро бор мекунад ва бо истифода аз усули дар боло тавсифшуда онро бор мекунад.

#! / usr / bin / env ёқут
$ LOAD_PATH << './lib'
'test_library.rb' талаб мекунад
t = TestClass.new