Ruby programozási nyelv
A Wikipédiából, a szabad lexikonból.
A Ruby egy teljesen objektum-orientált interpretált nyelv. Minden komolyabb platformon működik (természetesen interpretere telepítése után). Ingyenes free software, nyílvános forrású open-source. Egyebek mellet alkalmas ablakos alkalmazások készítésére (a Tcl/Tk segítségével), és webes alkalmazásokra is (Ruby on Rails). És típusos!
- született: 1995
- megalkotó: Yukihiro Matsumoto
- fejlesztők: Yukihiro Matsumoto (és mások)
- legfirssebb verzió: 1.8.5
- megjelenés időpontja: 2006. augusztus 25.
- rokonok: Smalltalk, Perl, Lisp, Python, CLU, Dylan
- oprendszerek: Platform-független
- licenc: Ruby License és GPL
- honlap: www.ruby-lang.org
Tartalomjegyzék |
[szerkesztés] Filozófia, ízelítő
Alapjellegét a célirányos objektumorientáltsága határozza meg. Minden objektum. Még egy szám is. Pl. az, hogy 5, ez egy objektum, s mint ilyennek, vannak saját függvényei, eljárásai. Pl. ha az 5-öt, mint egész számot (ami ugye objektum!), át akarod alakítani szöveggé (ez esetenként igen fontos, hiszen a nyelv alapvetően típusos), akkor pl. nem ilyen jellegű függvényt kell használni: IntToStr(5) – ahol a z 5 bemeneti paraméter, hanem 5.to_s.
A nyelv típusossága ellenére azonban függvénydefiníciókor nem kell meghatározni a bemeneti (és kimeneti) változók típusát. Egy függvény definíciója pl így nézhet ki:
def osszeadas a, b return a + b end
Meghívása pedig így történhet:
osszeadas 1, 2 => 3
Talán feltünk az is, hogy a függvény deffiníciójánál és meghívásánal a paramétereket nem kell zárójelbe tenni. Pontosabban ez opcionális lehetőség, értelme ott van, amikor egyébként nem lehetne eldönteni, hogy a paraméterek mely függvényhez tartoznak. pl.
osszeadas 1, 2 * 3 => 7
de
osszeadas(1, 2) * 3 => 9
(Ilyenkor azonban erősen javallják, hogy a függvény neve és a paramétereit tartalmazó zárójel között ne maradjon szóköz)
További sajátossága (típusosságából adódóan) az, hogy nem végez automatikus típuskonverziót (php-n nevelkedettek nagy bánatára). Még számok között sem. Pl.:
1 / 2 => 0
mert ő úgy gondolja, hogy ha az osztandó és az osztó is egész, akkor a hányados is az kell legyen, tehát kerekít. De:
1.0 / 2 => 0.5 1 / 2.0 => 0.5
Ha egy változóval van bajunk, amiről nem tudjuk ránézésre, hogy milyen típusú, de törtté akarjuk osztani, a legelegánsabb megolás ez:
a = 1 a.to_f / 2 => 0.5
Itt ugy-e a to_f függvény suttyomban valós számmá alakította az a változót.
Ami a változókat illeti: nem kell deklarálni őket (ez is olyan php-s), bárhol be lehet vezetni, és a láthatósági tartományokon belül elérhető. A változók elé nem kell semmilyen speciális karaktert tenni (mint php-ben a $), viszont a nagybetűvel kezdődő kifejezéseket szigorúan konstansnak vagy osztálynak akarja felfogni. Pl.
A = 3 => ez rendben van, rögzített egy A konstanst A = 4 => idézem: „warning: already initialized constant A”
És még egy: a sorokat nem kell pontosvesszővel lezárni. De lehet. Ennek akkor van értelme, ha több utasítás van ugyanabban a sorban. Ekkor a pontosvessző utasításelválasztóként fungál.
[szerkesztés] Telepítés
[szerkesztés] Linux
[szerkesztés] Ubuntu
Tapasztalataim szerint alapból benne van, de ha mégse, akkor
sudo apt-get install ruby
Ha alapból nem tenné fel, érdemes továbbá telepíteni az irb-t is, ami egy igen kellemes parancssori interpreter.
[szerkesztés] Windows
Töltsd le a telepítőállományt a http://rubyforge.org/frs/?group_id=167 oldalról, és telepítsd. No comment.
[szerkesztés] A nyelvről szakszerűen
[szerkesztés] Osztályok
[szerkesztés] Feltételes szerkezete, ciklusok
[szerkesztés] If (ha)
A más nyelvekben megszokotthoz hasonlóan is lehet használni, pl:
if a < b then c = -1 elseif a == b c = 0 else c = 1 end
Szintaktikai jellezmzők:
- a feltételvizsgálatot nem kötlező zárójelbe tenni, persze ha összetett, az egyértelműség kedvéért érdemes csoportosítani
- a then szót nem kötelező kiírni, csak akkor, ha a végrehajtandó utasítás azonos sorban van (az end ekkor is kötelező)
Megjegyzés: a fenti példa kizárólak didaktikai célra használandó. Ugyanis ugyanezt a tevékenységeg elvégzi a <=> összehasonlító operátor is, amely három értéket adhat vissza (-1, ha a bal oldal kisebb, 0, ha egyenlő, 1, ha nagyobb).
1 <=> 0 => 1 1 <=> 1 => 0 1 <=> 2 => -1
Alternatív használat: a feltételt a végrehajtandó utasítás után is írhatjuk!
puts 'de jó' if 1 > 0 => de jó
Ha arra van szükségünk, a feltételvizsgálat értéket is tud visszaadni, például:
kimenet = if a < b then -1 elseif a == b 0 else 1 end
Ha viszont csak ha-különben esettel van dolgunk, van ennek egy rövidített formája is:
kimenet = a < b ? a : b
(a feltételt a ? zárja, a két lehetséges kimenetet pedig : választja el, ezen belül persze bármilyne kifejezés szerepelhet, ami kimenetet produkál, akár függvényhívás is)
[szerkesztés] Unless (ha nem)
Létezik az if fordítottja is, az unless is. Ez értelemszerűen akkor fut le, ha a vizsgált kifejezés hamis. Példák:
unless 1 < 2 er = 1 else er = 2 end
A unless után is használhatjuk a then-t, ha ugyanabban a sorban akarjuk folytatni (egyébként nem kötelező).
kim = unless 1 < 0 then 1 else 2 end
Nyílván az unless is használható az utasítás után.
a = 1 unless a == 1
Ez persze ekvivalens ezzel:
a = 1 if a != 1
Kinek melyik tetszik jobban!
[szerkesztés] While (amíg)
Amíg a feltétel igaz, végrehajtja a végrehajtani valót. Szerkezete igen egyszerű:
a = 0 while a < 10 a += 1 puts a end => 1 2 3 4 5 6 7 8 9 10
[szerkesztés] Kivételkezelés
[szerkesztés] Beépített osztályok
[szerkesztés] A nyelv alkalmazása
- Webes alkalmazás: Ruby on Rails
- Ablakos alkalmazás: Ruby TK