11. Izvan ovog tutoriala

Gdje ćemo to sad? Ako imate kakvih pitanja, kome da ih postavite? Šta ako poželite da vaš program otvori web stranicu ili pošalje e-mail ili promjeni dimenzije digitalne fotografije. E pa, postoji mnogo, mnogo, različitih mjesta gdje možete naći pomoć, kad je Ruby u pitanju. Nažalost, to nekako i ne zvuči kao velika pomoć, zar ne? ;-)

Za mene postoje tri mjesta na kojima sam siguran da ću pronaći pomoć za Ruby. Ako je neka sitnica u pitanju i mislim da mogu sam eksperimentisati i pronaći odgovor onda koristim IRB. Desi li se da je pitanje nešto malo složenije, pa treba kopati malo dublje, onda koristim vlastitu „krampu“. Međutim, ako se desi da ni to ne pomaže onda fino pristupim na ruby-talk.

IRB: interaktivna Ruby

Kad je na vaš sistem instalirana Ruby, u tom paketu se nalazi i irb – njena interaktivna konzola. IRB je jednostavno pokrenuti, na način da u komandni prompt [k.p.: važi i za Linux i za Windows OS] upišete irb [+Enter]. Kad ste u irb-u možete upisati bilo koji izraz i Ruby će vam vratiti vrijednost koja je njegov rezultat. Upišite 1 + 2 i irb vraća rezultat 3 (ne morate čak koristiti puts). Kad završite, jednostavno upišite „exit“.

Nije ovo sve što irb pruža, ali ostatak možete naučiti koristeći moju „krampu“.

KRAMPA: „Programming Ruby“

Knjiga koju morate imate je „Programming Ruby, The Pragmatic Programer's Guide“, koju su napisali David Thomas i Andrew Hunt (Pragmatični programeri). Iako ćete se dobro snaći i sa starijom verzijom, toplo vam preporučujem drugo izdanje ove sjajne knjige, jer ona pokriva poslijednju verziju Ruby. Stariju verziju možete dobiti i besplatno, putem interneta, a uz Ruby na Windows-ima trebalo bi da knjiga standardno dolazi.

Možete u njoj naći baš sve o Ruby, od početničkog do naprednog. Lahka je za čitanje, razumljiva, ma jednostavno savršena! Kamo sreće da svaki programski jezik ima ovako kvalitetnu knjigu kakva je ova. Na poleđini knjige ćete naći ogromnu zbirku koja opisuje do detalja svaku metodu i svakoj klasi, sve potkovano primjerima. Ma ja jednostavno volim ovu knjigu!

Nekoliko je adresa preko kojih je možete preuzeti (uključujući i stranicu Pragmatičnih programera), ali meni omiljeno mjesto je ruby-doc.org. Verzija postavljena na toj stranici ima lijepo predočen sadržaj i dobar indeks (a pored toga ima odličnu dokumentaciju koja pokriva sve što se može dovesti u vezu s Ruby).

Zašto sam je nazvao „krampa“? Pa, na naslovnoj strani je nacrtana krampa...možda je smiješno ime.

Ruby-Talk: mailing lista za Ruby

Ponekad čak i uz irb i "krampu" ne može se naći riješenje za određeni problem. Ili možda želite znati da li je neko prije vas to uradio, tako da vi to ne morate. Ruby-Talk je u tom slučaju prava adresa. Lista je puna prijateljski nastrojenih, pametnih ljudi, koji su spremni pomoći. Više detalja o njoj ovdje.

Tim Toady

Nešto od čega sam vas pokušao zaštiti, ali na što ćete svakako naletiti uskoro, jeste koncept TMTOWTDI (izgovara se kao "Tim Toady"): There's More Than One Way To Do Itpostoji više od jednog načina da se to uradi.

Neki će reći da je taj koncept prava stvar, dok će drugi dati drukčije mišljenje. Ja lično nešto plaho i ne volim ovaj koncept jer je to užasan način da se nekoga podučava programiranju. (Kao da i ovaj jedan način nije dovoljno izazovan i ponekad zbunjujući.)

Međutim, sad kada idete izvan ovog tutoriala, vjerovatno ćete vidjeti mnogo različitih postavki koda za jedan te isti programerski problem. Naprimjer, mogu smisliti najmanje pet različitih načina da ispišem string, na način drukčiji od pukog zarobljavanja među navode, a svaki od njih radi na drukčiji način. Šest najjednostavnijih sam vam već pokazao.

Kad smo pričali ogrananju, pokazao sam vam –if- ali nisam –unless-. Pustiću vas da sami „skontate“ njegovu svrhu koristeći irb.

Još jedna fina „prečica“ koju možete koristiti uz –if-, -unless- i –while- je:

# Ovo su riječi iz programa koji sam napisao, a koji

# generiše riječi na jeziku nalik na engleski. Cool, huh?

puts 'grobably combergearl kitatently thememberate' if 5 == 2**2 + 1**1

puts 'enlestrationshifter supposine follutify blace' unless 'Chris'.length == 5

Ispis:

grobably combergearl kitatently thememberate

Konačno, postoji još jedan način da se napišu metode koje „gutaju“ blokove koda (a ne procedure). Vidjeli smo da smo u jednom primjeru zgrabili blok koda i pretvorili ga u proceduru koristeći &block caku u listi parametara, pri definiciji funkcije. Onda, da bi pozvali taj blok na izvršenje, jednostavno smo dali komandu block.call. E pa, postoji i kraći način da se to učini (iako ga ja lično smatram zbunjujućim). Umjesto ovoga:

def doItTwice(&block)

block.call

block.call

end

doItTwice do

puts 'murditivent flavitemphan siresent litics'

end

Ispis:

murditivent flavitemphan siresent litics

murditivent flavitemphan siresent litics

...napišemo slijedeće:

def doItTwice

yield

yield

end

doItTwice do

puts 'buritiate mustripe lablic acticise'

end

Ispis:

buritiate mustripe lablic acticise

buritiate mustripe lablic acticise

Ne znam, baš,...šta vi mislite? Možda je samo do mene, ali...YIELD!? Da je bilo nešto kao call_the_hidden_block, ili nešto njemu slično, meni bi imalo više smisla. Mnogo ljudi kaže da YIELD njima ima smisla. Ha, valjda je to sva poenta TMTOWTDI: oni će raditi kako im volja, a ja kako je meni.

K R A J

Iskoristite ovo znanje u korisnu svrhu, a ne za kakvo zlo! :-) Svakako, ako vam je ovaj tutorial bio od pomoći (ili vas je dodatno zbunio, ili nađete grješku), javite mi na e-mail!

----------------------------------------------

© 2003-2009 Chris Pine

http://pine.fm/LearnToProgram/