Ruby on Rails díl.15, Ruby - Metody II.

Napsal (») 25. 3. 2007 v kategorii Programování, přečteno: 1529×
obrazky/rubyonrailsn.pngIdeální webhosting pro Ruby on Rails je banan.cz.

Metody 2


Proměnná délka seznamu argumentů, hvězdičkový operátor

Poslední parametr metody může být předcházený hvězdičkou(*), která je někdy nazývaná krycí operátor. Ta signalizuje , že může být do funkce vloženo ještě více paramatrů. Ty parametry jsou sezbírány do jednoho pole, které je vytvořené.

def počítat_hodnotu(x,y,*dalšíHodnoty)
puts dalšíHodnoty
end

počítat_hodnotu(1,2,'a','b','c')


Pro výše uvedený příklad by byl výstup ['', ' b', ' c'].

Hvězdičkový operátor může také předcházet argumentu pole ve volání metody. V tomto případě bude pole rozšířené a hodnoty které byly sezbírány jako kdyby byli oddělené čárkami.

arr = ['a','b',c']
počítat_hodnotu(*arr)


má stejný výsledek jako:

počítat_hodnotu('a','b','c')


Další technika Ruby dovoluje použít Hash při volání funkce, a to vám dává to nejlepší ze všech světů: pojmenované parametry, a proměnnou délku argumentů.

def přijmi_haše( var )
print "dostal:", var.inspect # budete tisknout co dostal
end

přijmi_haše :arg1 => ' dává arg1 ' , :argN => ' dávání argN '
# => dostal:{:argN=>"dává argN", :arg1=>"dávání arg1"}


Vidíte, argumenty přijmi_haše byly shluknuty do jedné haš proměnné. Tato technika je velmi často používána v Rubě On Rails API.

Všimněte si chybějících rodičů kolem argumentů funkce přijmi_haše, uvědomme si, že zde není žádná { } Haš syntaxe kolem :arg1 => ' ... ' kódu. Výše uvedený kód je rovnocenný víc výmluvnému následujícímu:

přijmi_haš( :arg1 => ' dává arg1 ' , :argN => ' dává argN ' ) # výchozí seznam přiložený v rodičích
přijmi_haš( { :arg1 => ' dává arg1 ' , :argN => ' dává argN ' } ) # haš je explicitně vytvořen


Tak a teď, jestli se chystáte donutit kódový blok k tomu, aby fungoval, potřebujete závorky.

přijmi_haš( :arg1 => ' dává arg1 ' , :argN => ' dává argN ' ) { |s| puts s }
přijmi_haš( { :arg1 => ' dává arg1 ' , :argN => ' dává argN ' } ) { |s| puts s }
# druhý řádek je více výmluvný, haš je explicitně vytvořený, ale v podstatě stejný jak výše uvedený


Operátor ampersand

Stejně jako hvězdička, značka(&) může předcházet poslední parametr deklarace funkcí. Toto signalizuje , že funkce očekává kódový blok, který bude vložen. A Proc objekt bude vytvořený a přiřazený do parametru obsahujícího blok "vložen v".

Stejně jako ampersand , Proc má přednost běhěm volání metody a bude nahrazený blokem, který představuje. Výnos pak může být užívaný.

def metoda_volání
yield
end

metoda_volání(&nejakyBlok)

Štítky: Ruby on Rails
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel sedm a třináct