Ruby – příkazy stručně a přehledně

Chystáte se stejně jako já na programování v Ruby případně Ruby on Rails? Pak by vám mohl pomoci můj stručný přehled základních příkazů a syntaxe tohoto skriptovacího jazyka. Nejedná se však o vysvětlení principů programování a jeho prvků, nýbrž jen přehled usnadňující přechod na Ruby.

KOMENTÁŘE

# poznamka

=begin
..... komentare
=end

PROMĚNNÉ

– deklarace bez typu: promenna = 3, 3.2, ‘text’
lokální: a-z, _xxx
globální: $jmeno
vicenasobne prirazeni: a = b = 3; a,b = 1,2
zkraceny zapis: +=, -=, /=…..

KONSTANTY

– název velkými písmeny PI, CONST
– při ukládaní do nich jen varování

DATOVÉ TYPY

– interpretr sám pozná, co použít
fixnum a intbignum – stejné jako int a longint
float – desetinné číslo s ‘.’

STRING

– text v ‘text’(vypíše obsah tak jak je bez logiky) nebo „text“(je možné využít logiku či proměnné),
– spojení řetězců pomocí + nebo násobení puts ‘ab’* 3(vypíše ababab)
– metody: .length, .upcase, .downcase, .swapcase(vymění velká x malá), .reverse
– pro uložení změny je nutné text = text.funkce nebo použít vykřičník text.metoda!

ARRAY

– pole = [1,“aa“, [1,2,3]] – možnost různých datových typů
– index od 0 a lze indexovat od zadu [-cislo], pole[index]
– [] + [] spojovani poli, neexistujici prvek vrati nil
– výpis: čísla[0,3] první tři prvky od začátku, čísla[0..3] prvky s indexem 0 až 3, čísla[-3,2] dva prvky od indexu -3
– přidáni(nahrazení) do pole – pole[x] = y (pro přidání volte vyšší číslo indexu), připadne prvky mezi jsou nahrazeny nil
– funkce: pole.length, pole.reverse, pole.compact(zkrátí pole o nil prvky), opět nutny !
– vymazáni prvku – pole.delete(„a“) bez přiřazení či vykřičníku

ARRAY to STRING

text = pole.join(‘;’) – ; je rozlišovací znak, není nutné uvádět

STRING to ARRAY

pole = text.split(‘;’) – ; je rozlišovací znak, převod jen na string

FIFO
– pole s metodami buffer.push(vlozi na zacatek), buffer.shift(vezme ze zacatku)

HASH

– orientace pomoci klíčů
– hash = {„jmeno“ => „martin“, „prijmeni“ => „hruzik“, „vek“=>23},  puts hash[„vek“], přidání hash[„prace“] = „ano“, smazání hash.delete(„prace“), uplne smazani hash.clearmetody: hash.length, hash.keys(pole klíčů), hash.values(pole hodnot), hash.index(hodnota) klíč k hodnotě, hash.invert(prohodi klíče a hodnoty), hash.has_key?(„klic“), hash.has_value?(„value“) true/false<\ br>

VÝSTUP

– puts x,y,z – umi i více parametru odděluje novým řádkem
-prints x,y,z – nepřechází na nový řádek
– v uvozovkach #{5*5*cislo} – použití logiky
\\ – zpetne lomitko, \\ – apostrof ‘, \“ – uvozovky „, \b – krok zpet, \n – presun na novy řádek, \r – presun na zacatek radku, \t – tabulator
– printf stejně jako v C a přidává formátováni – printf „%0.3f“, 3.14, (%f,%d,%s)
VSTUP
– promenna = gets nebo promenna = readline
– vstup se uloží se znakem nového řádku
– odstranění posledního znaku – promenna.chop nebo promenna = gets.chop<\ br>

PŘEVOD TEXTU NA ČÍSLO

– text.to_i, „2″.to_i, gets.to_i  – převod na integer
– text.to_f, „3.44″.to_f, gets.to_f – převod na float<\ br>

ŘÍDÍCÍ STRUKTURY

– relační operátory: ==, !=, <, >, <=, >=logicke operatory: &&, ||, !
– každý if má end, máme i else, elsif
– můžeme využít i opak if – unless(podminka)
– podmínka výstupu: puts „Cislo je kladne“ if (cislo > 0)
if (cislo > 0)
puts "Cislo je kladne"
elsif (cislo == 0)  || (cislo < 0)
puts "Cislo je nekladne"
puts "No jo ale jake?"
if(cislo < 0)
puts "Cislo je zaporne"
else
puts "Cislo je nula"
end
end
case (promenna)
when 2,3,4
puts x
when 5..10
puts y * 2
else
puts "nic"
end

CYKLY

– while dokud je podmínka splněna, until dokud není splněna

while a < b
puts b
b -= a
end

…lze přepsat na
until a >= b
puts b
b -= a
end;

FOR – na čísla ale i pole

for i in (1..5)
puts i
end

for text in pole
puts text
end

TIMES:
– pro několikanásobné provedení kódu – |i| není nutné, jen se do něj uchovává pořadí provádění
5.times {
|i|  puts i+1
}

upto(downto) cislo.upto(max) {…}, step – cislo.step(do kolika, po kolika) {…}

EACH
– each array – pole.each {|promenna| kod}, pole.each_index {|i| kod}each hash
– hash.each {|klic, hodnota|}, hash.each_key {}, hash.each_value {}
– each string – text.each{|radek|} po radcich, text.each(‘, ‘) {|text|} podle rozlišovacího znaku

REGULARNÍ VÝRAZY

– uvozují se do /vyraz/
– retezec =~ /reguralni_vyraz/ pokud nalezne tak vrati index prvniho vyskytu, pokud nenajde, tak nil
– sub – aplikuje se na první nalezený výskyt retezec.sub(/reg_vyraz_co nahradit/, „cim nahradit“), retezec.sub!() ulozi
– gsub – nahradí všechny výskyty – retezec.sub!(/martin/, „ruby“)
– $n – kulatá závorka ma uvnitř reg. vyrazu speciální účinek, že obsah regularního výrazu v ní obsaženého se uloží do $n
– /author=(.*)/ uloži zbytek výrazu do $1, můžeme zavorek použit i více a budeme mít $1, $2..$n

METODY

definice:
def nazev(parametr1, parametr2,...)
return navratova_hodnota
end
volání: nazev(a,b,..)

TŘÍDY

– má vlastní proměnné i metody, metoda initialize(volá se při new) je nutná v případě, že třída má proměnné, v této metodě se naplní hodnotami

definice:
class Trida
def initialize(parametr1, parametr2,...)
@parametr1 = parametr1
@parametr2 = parametr2
end
def metoda
return parametr1 + parametr2
end
end
inicializace: moje_trida = Trida.new(parametr1, parametr2,...)

– pro vnější práci s proměnnými třídy je nutné napsat metody, nejlépe podle níže uvedeného vzoru, můžeme k nim pak přistupovat z venčí

def parametr1

return @parametr1
end
def parametr1=(nova_hodnota)
@parametr1 = nova_hodnota
end

– pokud nám ale stačí standardní přiřazení/čtení proměnné můžeme si pomoci následujícím kódem, který zajistí, že proměnnou 1 a 2 půjde číst a do 1 i zapisovat:attr_reader :parametr1, :parametr2 attr_writer :parametr1
– proměnná třídy je společná proměnná pro všechny instance (obdoba static proměnné, například čítač  instancí) a definuje se @@nazev_tridni_promenne na začátku třídy před initialize

DĚDIČNOST

definice:
class Potomek<Rodic
– redefinované metody potomka automaticky přepisují stejně nazvané metody rodiče (zejména použitelné u initialize)

ŘÍZENÍ PŘÍSTUPU

– na konec třídy je vhodné uvést nastavení přístupu k jednotlivym metodám
– public :metoda1 private :metoda2, metoda3
public – přístup povolen odkudkoliv(implicitní volba)
protected – přístup jen mezi instancemi stejné třídy
private – přístup jen v rámci instance

OŠETŘOVÁNÍ CHYB

– výjimku lze vyvolat i příkazem – raise „Moje chyba!“

begin
# kód pod kontrolou
rescue
# ošetření chyby, v $! je hláška poslední chyby
puts $!
ensure
# kód se provede vždy
end

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

Rubriky

Krátké zprávy

  • OSIsoft User Conference v Paříži 16/07/2013
    I když zrovna nepatřím mezi fanoušky Francie, tak se do země baget, sýrů a lahodného vína brzy podívám. Asi 100m od Eifelovky totiž bude 16-19 září probíhat Osisoft User Conference, kde budu svou mateřskou firmu reprezentovat. Tak snad si o Francii napravím své mínění.
My Flightdiary.net profile