Ruby je interpretirani, dinamični, refleksivni, objektno-orijentirani programski jezik. Razvio ga je Yukihiro Matsumoto, a Ruby se fokusira na jednostavnost i produktivnost. Elegantna sintaksa omogućuje programerima lakše čitanje i pisanje koda.
U ovom vodiču, radit ćemo s nizovima znakova u Rubyju.
Preduvjeti
Za izvođenje koraka prikazanih u ovom vodiču potrebne su vam sljedeće komponente:
- Ispravno konfiguriran Ubuntu sustav. Saznajte više o konfiguriranju vlastitog Ubuntu poslužitelja na CloudSigma.
- Bilo koji moderni uređivač teksta, po mogućnosti s isticanjem sintakse, na primjer, VS Code, Sublime Text, Atom, Brackets, Vim, itd.
Tip podataka String
U programiranju, string je uobičajeni tip podataka koji podržava svaki moderni programski jezik. Karakterizira ga slijed znakova. Cijeli slijed znakova tretira se kao jedan podatak. Niz znakova može sadržavati slova, znamenke i posebne znakove/simbole.
Ruby, kao čisti objektno-orijentirani programski jezik, tretira nizove znakova kao objekte. Za razliku od mnogih drugih jezika, nizovi znakova u Rubyju su promjenjivi. Uglavnom, vrijednost niza znakova može se promijeniti na licu mjesta.
Korak 1 – Stvaranje i ispisivanje nizova znakova
U Rubyju, nizovi znakova su obavijeni jednostrukim navodnicima ( ') ili dvostrukim navodnicima ( "). Sljedeća dva su valjana niza znakova u Rubyju:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
Za ispis bilo kojeg izlaza na zaslon konzole, Ruby dolazi s metodom print:
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
Vrijeme je da to primijenimo u praksi. Stvorite novu Ruby datoteku practice.rb i unesite sljedeći kod:
Pokrenite kod:
|
1 |
ruby practice.rb |
Kao što se i očekivalo, naredba print ispisuje pružene nizove znakova. Ako želimo ispisati nizove znakova u zasebnim redcima, bolje je koristiti puts umjesto toga. Ažurirajte kod:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
Zatim ponovno pokrenite kod:
|
1 |
ruby practice.rb |
Korak 2 – Varijable niza znakova
Varijable su nazivi koji se odnose na određeno mjesto u računalnoj memoriji gdje je pohranjena vrijednost. Željenu vrijednost možemo pohraniti u varijablu i koristiti je kasnije.
U Rubyju, za deklariranje varijable niza znakova, definirajte naziv varijable i dodijelite vrijednost niza znakova:
|
1 |
<variable_name> = <string> |
Napišite sljedeći kod u practice.rb:
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
Pokrenite kod:
|
1 |
ruby practice.rb |
Ovdje:
- Definirali smo dvije varijable first_half i second_half, od kojih je svakoj dodijeljena vrijednost niza znakova.
- Metoda puts ispisuje vrijednost varijabli.
Korak 3 – Spajanje nizova znakova
Spajanjem možemo uzeti više nizova znakova i spojiti ih kako bismo stvorili novi niz znakova. Spajanje nizova znakova označava se operatorom spajanja ( +). Imajte na umu da je ovaj simbol također operator zbrajanja kada radite s aritmetičkim operacijama.
Pokušajmo izvesti spajanje nizova znakova na nizovima koje smo do sada deklarirali:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
Pokrenite kod:
|
1 |
ruby practice.rb |
Kao što izlaz pokazuje, spajanje ne uvodi nikakav dodatni znak između nizova. Zato su fox i jumps spojeni zajedno. To možemo popraviti uvođenjem razmaka nakon fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
Pokrenite kod:
|
1 |
ruby practice.rb |
Sada izlaz izgleda bolje.
Spajanje nizova znakova također radi s varijablama. Pogledajte sljedeći primjer:
|
1 2 |
first_half = "brza smeđa lisica " puts first_half + "preskače lijenog psa" |
Pokrenite kod:
|
1 |
ruby practice.rb |
Sljedeći primjer prikazuje dugačak lanac spajanja:
|
1 2 3 |
username = "cloudsigma" fav_color = "plava" puts "pozdrav, " + username + "! tvoja omiljena boja je " + fav_color + "." |
Pokrenite kod:
|
1 |
ruby practice.rb |
Do sada smo se bavili samo tekstualnim varijablama (stringovima). Što ako postoje različite vrste varijabli? Sljedeći program testira ovaj scenarij:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
Pri pokušaju pokretanja ovog programa, Ruby će javiti pogrešku:
|
1 |
ruby practice.rb |
Međutim, možemo pretvoriti cijeli broj u string kako bismo izbjegli ovaj problem:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
Ovdje:
-
Metoda to_s pretvara vrijednost varijable u string.
Pretvaranje brojeva u stringove uobičajena je pojava kada se radi s elementima kao što su poštanski brojevi, valuta, telefonski brojevi i drugi numerički podaci.
Step 4 – Interpolacija stringova
Iako je spajanje stringova moćna značajka, vrlo lako može postati komplicirano. U mnogim situacijama vjerojatno ćete primijetiti da vam nedostaje operator spajanja ( +), što dovodi do velike glavobolje. Štoviše, kada radite s različitim tipovima podataka, oni se prvo moraju pretvoriti u string. Srećom, Ruby nudi druge načine umetanja vrijednosti varijabli u string pomoću značajke interpolacije stringova.
Evo kako to izgleda. Na primjer, umjesto korištenja:
|
1 |
"pozdrav, " + username + "!" |
Koristit ćemo:
|
1 |
"pozdrav, #{username}!" |
Iako sintaksa može izgledati malo čudno, ona dramatično pojednostavljuje kod. Nema potrebe za ručnim pozivanjem metode to_s za pretvaranje vrijednosti varijable u string.
Upotrijebimo ovu novu tehniku za ažuriranje našeg prethodnog koda:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "pozdrav, #{username}! tvoj korisnički ID je #{user_id}" |
Pokrenite kod:
|
1 |
ruby practice.rb |
Step 5 – Literali stringova i vrijednosti stringova
Primijetite da su stringovi deklarirani u kodu uvijek okruženi navodnicima. Međutim, kada se ispisuje izlaz na zaslon konzole, nema navodnika. Jasno postoji razlika između njih.
- Literal stringa: To je string napisan u izvornom kodu (uključujući navodnike).
- Vrijednost stringa: To je vrijednost koja se ispisuje na izlazu (bez navodnika).
Na primjer, sljedeći je literal stringa:
|
1 |
"pozdrav svijete" |
Njegova vrijednost stringa bila bi pozdrav svijete.
Step 6 – Izbjegavanje navodnika i apostrofa
Kao što smo pokazali, navodnici i apostrofi koriste se za označavanje stringova u izvornom kodu. To stvara problem: ne možete ih imati izravno u stringu. U suprotnom će to uzrokovati probleme. Sljedeći kod to demonstrira:
|
1 |
puts 'it's what it is' |
Postoje različite taktike za zaobilaženje ovog problema.
-
Korištenje alternativne sintakse stringa
Ovo je najjednostavniji način za rješavanje ovog problema. Ako vaš string treba jednostruke navodnike, upotrijebite dvostruke navodnike u literalu stringa (i obrnuto).
Popravimo prethodni primjer:
|
1 |
puts "it's what it is" |
Drugi primjer bio bi:
|
1 |
puts 'rekao je, "pozdrav svijete"' |
Međutim, to neće raditi u svakoj situaciji. Na primjer:
|
1 |
puts "Cloudsigma kaže, "I'm a happy boi!"" |
-
Korištenje izlaznih znakova (escape characters)
Kosa crta unazad ( \) se često naziva izlaznim znakom (escape character). On sprječava Ruby da doslovno interpretira sljedeći znak. Popravimo prethodni primjer. Upotrijebite kosu crtu unazad kako biste spriječili Ruby da interpretira unutarnje dvostruke navodnike kao literale:
|
1 |
puts "Cloudsigma kaže, \"Ja sam sretan dečko!\"" |
-
Korištenje alternativne sintakse
Do sada smo radili samo s jednostrukim i dvostrukim navodnicima za označavanje znakovnog literala. Međutim, prethodni primjeri su jednostavni prikazi kako to vrlo brzo može izmaći kontroli. Kako bismo riješili ovaj problem, možemo u potpunosti odbaciti navodnike i upotrijebiti potpuno drugačiji simbol za označavanje početka i kraja niza.
Pogledajte sljedeći primjer:
|
1 |
%$ta brza smeđa lisica je rekla, "preskočio sam lijenog psa"$ |
Ovdje:
-
- Simbol % definira sljedeći znak ( $, u ovom slučaju) kao graničnik niza.
- Znakovni literal ovdje je $ta brza smeđa lisica je rekla, "preskočio sam lijenog psa"$.
Stavimo to u akciju:
|
1 |
puts %$ta brza smeđa lisica je rekla, "preskočio sam lijenog psa"$ |
Ovdje se niz u osnovi tretira kao sljedeće:
|
1 |
"ta brza smeđa lisica je rekla, \"preskočio sam lijenog psa\"" |
Međutim, to ponovno uvodi problem izbjegavanja (escaping) graničnika ako se on koristi u nizu. Jedan od načina da se to izbjegne je korištenje simbola koji se općenito ne pojavljuju u nizovima znakova. Takvi simboli mogu uključivati vitičaste zagrade, uglate zagrade itd.:
|
1 |
puts %{"pozdrav, svijete!", rekao je} |
Također savršeno radi s interpolacijama niza:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{pozdrav, #{username}.#{user_id}!} |
Također je uobičajeno koristiti %Q{} i % i {} za definiranje nizova u Ruby programima. Ovdje, %Q{} djeluje kao dvostruki navodnici, a %q{} djeluje kao jednostruki navodnici.
Korak 7 – Novi redovi i dugi nizovi
Kada radite s nizovima znakova, bit će situacija u kojima ćete htjeti uvesti novi red (newline) ili povratak na početak reda (carriage return) u niz. To možemo učiniti uvođenjem escape znakova \n (novi red) i \r (povratak na početak reda).
Pogledajte sljedeći primjer:
|
1 2 |
hello_world = "ta brza\nsmeđa lisica\nskače preko\ntog lijenog psa" puts hello_world |
Znakovni literal izgleda zbunjujuće, zar ne? Presložimo ga radi bolje čitljivosti:
|
1 2 3 4 5 6 7 |
hello_world = "ta brza\n" + "smeđa lisica\n" + "skače preko\n" + "tog lijenog psa" puts hello_world |
Umjesto ručnog deklariranja znakova novog reda, možemo koristiti i sljedeću strukturu:
|
1 2 3 4 5 6 |
hello_world = "ta brza smeđa lisica skače preko tog lijenog psa" puts hello_world |
U ovoj metodi, niz čuva sve razmake. Međutim, to kvari ispis. Uklonite suvišne razmake kako biste to popravili:
|
1 2 3 4 5 |
hello_world = "ta brza smeđa lisica skače preko tog lijenog psa" |
Iako je problem s razmacima riješen, to smanjuje čitljivost koda. Ovaj problem možemo riješiti implementacijom heredoc, što je izraz za višeredne znakovne literale. Ažurirani kod bi izgledao ovako:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END ta brza smeđa lisica skače preko tog lijenog psa END puts hello_world |
Počevši od verzije Ruby v2.3 i novije, dostupna je još jedna značajka, nazvana squiggly heredoc sintaksa. Ona uklanja početne razmake u nizovima. Za izražavanje squiggly heredoc-a, zamijenite crticu ( -) tildom ( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END brza smeđa lisica skače preko lijenog psalazy dog END puts hello_world |
Korak 8 – Repliciranje stringova
U nekim situacijama može biti potrebno ponoviti string nekoliko puta. Ruby omogućuje repliciranje stringova na različite načine.
Jedna takva tehnika je korištenje * operatora. Općenito se koristi kao operator množenja kada se radi s brojevima. Međutim, kada se radi sa stringovima, on postaje operator za repliciranje stringova, ponavljajući jedan string onoliko puta koliko je potrebno. Broj ponavljanja mora biti cijeli broj.
U sljedećem primjeru, tekst Boris će se ponoviti 5 puta:
|
1 |
print "Boris" * 5 + "\n" |
Koristeći ovu značajku, možemo stvoriti zanimljivu ASCII umjetnost. Pogledajte sljedeći primjer:
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
Završne misli
Stringovi su u programiranju ključni. Ovaj vodič prikazuje rad sa stringovima u Rubyju. Naučili smo kako stvarati stringove i izvoditi različite operacije poput spajanja, rukovanja novim redovima, navodnicima itd. Koristeći interpolaciju stringova, također smo naučili kako bolje integrirati vrijednosti varijabli u stringove. Koristeći operator za repliciranje stringova, također možemo ponoviti jedan string više puta.
Iako je Ruby sam po sebi izvrstan programski jezik, često se kombinira s Rails okvirom. Ruby on Rails je web-okvir otvorenog koda. Saznajte više o instalaciji Ruby on Rails na Ubuntuu. Međutim, Ruby također može raditi s drugim aplikacijama, poput MySQL i PostgreSQL.
Sretno programiranje!












































Komentari
Još nema komentara. Budite prvi.