Разумевање 'Гудачких литерала' у Рубију

click fraud protection

Стринг објекти задржани наређени низови бајтова, обично знакова, обично чине делове текста који је читљив људима. Они су врло уобичајен тип објекта у свим програмским језицима и Руби има неколико високих нивоа и неколико начина ниског нивоа за креирање, приступ и управљање стринг објектима.

Низови се најчешће стварају помоћу а Стринг литерал. А буквално је посебна синтакса на језику Руби која ствара предмет одређене врсте. На пример, 23 је дословце које ствараФикнум објекта. Што се тиче дословних литерала, постоји неколико облика.

Сингле-Куотес и Доубле-Куотед Стрингс

Већина језика има Стринг литерал сличан овом, тако да је ово можда познато. Врсте цитата "(јединствени цитат, апостроф или тврд цитат) и "(двострука понуда или софт куота) користе се за затварање литералних стрингова, било шта између њих претвориће се у Стринг објекте. Следећи пример то показује.

Али постоје неке разлике између појединачних и двоструких цитата. Дупли цитати или софт куотес омогућују да се нека магија догоди иза кулиса. Најкориснија је интерполација унутар стрингова, корисна за уметање вредности променљиве у средину низа. То се постиже коришћењем

instagram viewer
#{ … } низ. Следећи пример ће вас питати за име и поздравити вас, користећи интерполацију за убацивање вашег имена у дословни штампан низ.

Имајте на уму да било који код може бити унутар заграде, а не само имена променљивих. Руби ће процијенити тај код и све што врати, покушаће да га уметне у стринг. Тако да можете једноставно да кажете "Здраво, # {гет.цхомп}" и заборави на оно име променљива. Међутим, добра је пракса да не стављате дуге изразе у заграде.

Поједини цитати, апострофе или тврди цитати су много рестриктивнији. Унутар појединачних цитата, Руби неће изводити интерполацију или есцапе секвенце осим избјегавања лика појединачног цитата и подвлачења црте (\' и \\ редом). Ако не намеравате да користите интерполацију, препоручује се употреба појединачних навода чешће него не.

Следећи пример ће покушати да интерполира променљиву унутар појединих цитата.

Ако ово покренете, нећете добити грешку, али шта ће бити одштампано?

Интерполациони низ пренесен је кроз непретумачен.

Када требам користити појединачне и двоструке наводнике

То је питање стила. Неки радије користе двоструке наводнике све вријеме, осим ако не постану неугодни. Други би радије користили појединачне цитате осим ако интерполацијско понашање није предвидјено. Нема ништа по себи опасно о кориштењу двоструких наводника све време, али то олакшава читање неког кода. Не морате да читате низ приликом читања кода ако знате да у њему нема интерполација јер знате да сам стринг неће имати нуспојава. Дакле, који стринг дословни облик који користите овиси о вама, овдје нема правог исправног и погрешног начина.

Есцапе Секуенцес

Шта ако, у дословном низу, желите да укључите лик цитата? На пример, стринг "Стеве је рекао" Моо! " неће радити. А ни воља "Не могу ово додирнути!". Оба ова низа садрже знак цитата унутар низа, чиме ефективно завршавају у дословном низу и узрокују грешку у синтакси. Можете заменити знакове цитата, као 'Стеве је рекао' Моо! '', али то заиста не решава проблем. Уместо тога, можете избећи било који цитатни знак унутар низа и он ће изгубити своје посебно значење (у овом случају је посебно значење затварање низа).

Да бисте побегли од знака, додајте га цртачем уназад. Знак нагиба уназад говори да Руби игнорише било које посебно значење које може имати следећи знак. Ако се ради о одговарајућем знаку цитата, не завршавајте низ. Ако је то хасх знак, немојте покренути интерполацијски блок. Следећи пример показује ову употребу црте са нагибом уназад за бекство посебних знакова.

Знак уназад црте може се користити за уклањање било ког посебног значења из следећег знака, али, збуњујуће је, може се користити и за означавање посебног понашања у двоструким цитираним жицама. Већина тих понашања имају везе са уметањем знакова и низова бајтова који се не могу уписати или приказати визуелно. Нису све жице знаковне жице или могу садржавати контролне секвенце намијењене терминалу, а не кориснику. Руби вам даје могућност да убаците ове врсте жица користећи знак за погибељ уназад.

  • \ н - Нова линија. Тхе ставља метода то ради аутоматски, али ако желите да је уметнете у средину низа, или је стринг намењен нечем другом осим ставља методом, можете то користити за додавање нове линије у низу.
  • \ т - знак таб. Знак картице помиче курсор преко (на већини терминала) на више од 8, тако да је ово врло корисно за приказ табеларних података. Међутим, постоје бољи начини за то, па се употреба знака табулатора сматра помало архаичним или шашавим.
  • \ ннн - Коса црта коју прате 3 броја означаваће АСЦИИ знак представљен са 3 окталне цифре. Зашто октал? Углавном из историјских разлога.
  • \ кнн - коса црта уназад, к и 2 хексада. Исто као и октална верзија, само са шестнаестним цифрама.

Вероватно никада нећете користити већину ових ствари, али знајте да постоје. И запамтите да они раде само у цитираним двоструким корацима.

На сљедећој страници се расправља о низовима из више редака и алтернативној синтакси за књижевне низове.

Вишеслојне жице

Већина језика не дозвољава вишеслојне низове дословно, али Руби то чини. Нема потребе да завршавате своје жице и додајете више жица за следећи ред, Руби обрађује вишеслојне низове дословца сасвим у реду са подразумеваним. синтакса.

Алтернате Синтак

Као и код већине осталих литерала, Руби нуди алтернативну синтаксу за стринг литерале. Ако, на пример, користите много знакова цитата у литерали, можда ћете желети да употребите ову синтаксу. Када користите ову синтаксу питање је стила, они обично нису потребни за жице.

Да бисте користили алтернативну синтаксу, користите следећу секвенцу за жице с једним цитатом % к {…}. Слично томе, употријебите сљедећу синтаксу за жице са двоструким цитирањем % К {…}. Ова алтернативна синтакса следи сва иста правила као и њихови "нормални" рођаци. Такође имајте на уму да можете користити било које знакове уместо заграде. Ако користите заградни, четвртасти носач, угаони носач или заграде, тада ће одговарајући знак завршити дословно. Ако не желите да користите одговарајуће карактере, можете да користите било који други симбол (ништа осим слова или броја). Буквал ће бити затворен са другим истим симболом. Следећи пример приказује неколико начина за коришћење ове синтаксе.

Алтернатива синтакса такође ради као низ од више редова.

instagram story viewer