Metody 1
V těchto dílech bych chtěl objasnit pár věcí které jsme tak trošku přeletěli.
Způsob volání metod
Metody jsou volány používáním následujících syntaxí:
metoda_jméno(parameter1, parameter2, …)
Jestli metoda nemá žádné parametry závorky obvykle mohou být opomenuty jak je tomu v následujícím příkladu:
metoda_jméno
Jestli nemáte v kódu potřebu použít výsledek metody ihned, Ruby dovoluje specifikovat parametry vynecháváním závorek:
výsledky = metoda_jméno parameter1, parameter2 # volání metody, bez používání závorek
# potřebujete závorky pouze jestli chcete pracovat s výsledkem ihned.
# ad. Jestli metoda vrací pole a my chceme obrátit pořadí prvků:
výsledky = metoda_jmenuje(parameter1, parameter2).reverse
Způsob definice
Metody jsou definované používání klíčového slova def následovaný jménem metody. Parametry metody jsou specifikované mezi závorkami, které následují po jméně metody. Tělo metody je ohraničeno touto definicí na vrcholu a slovem end ve spodní části. Na základě konvence názvy metod které se skládají z vícenásobných slov mají každé slovo oddělené podtržítkem.
Příklad:
def výstup_něco(hodnota)
puts hodnotu
end
Výstupní hodnoty
Metody vrátí hodnotu posledního vykonaného příkazu. Následující kód vrací hodnotu x+y.
def počítá_hodnota(x,y)
x + y
end
Explicitní příkaz může být také užíván k návratu z funkce s hodnotou, před koncem deklarace funkcí. Toto je účel když chcete ukončit smyčku nebo návratit z funkce následkem toho podmíněného výrazu.
Všimněte si, jestli užíváte "return" uvnitř bloku, ve skutečnosti vyskočíte z funkce, pravděpodobně to není to co chcete. Pro ukončení bloku, užívejte přerušení. Můžete připojit hodnotu k break, aby jste rozhodli co bude vráceným následkem toho bloku:
šest = (1..10).each {|i| break i jestli i > 5}
V tomto případě, šest bude mít hodnotu 6.
Implicitní hodnoty
A standardní hodnota parametru může být specifikovaná během definice metody k tomu, aby zastoupila hodnotu parametru jestliže neprošel do metody nebo jestliže hodnota parametru je nil.
def nějaká_metoda(hodnota='standard', arr=[])
puts hodnotu
puts arr.length
end
nějaká_metoda('něco')
`Výstup metody výše:
něco
0