Portál AbcLinuxu, 10. května 2025 02:02

Dotaz: Objasnění return

4.3.2013 18:33 BLACK
Objasnění return
Přečteno: 299×
Odpovědět | Admin
Ahoj, může někdo znalý objasnit co plní za funkci každý return? Děkuji
function in_array() {
  local x
  ENTRY=$1
  shift 1
  ARRAY=( "$@" )
  [ -z "${ARRAY}" ] && return 1
  [ -z "${ENTRY}" ] && return 1
  for x in ${ARRAY[@]}; do
    [ "${x}" == "${ENTRY}" ] && return 0
  done
  return 1
}

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.3.2013 18:58 chrono
Rozbalit Rozbalit vše Re: Objasnění return
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prvý a druhý vrátia nenulovú hodnotu pre prípad, že je entry alebo array prázdne. Potom sa postupne porovnávajú prvky toho pola s hľadanou hodnotou a ak sa taký prvok nájde, vráti sa 0. Pre prípad, že ten cyklus prvok v poli nenájde, je na konci ešte jedno return.

PS: Programy zvyknú vrátiť 0, ak je všetko v poriadku a tie návratové hodnoty sú opačne, ako by boli v iných programovacích jazykoch (a teda 0 je true a nenulová hodnota je false).
4.3.2013 19:07 potato
Rozbalit Rozbalit vše Re: Objasnění return
Prvý a druhý vrátia nenulovú hodnotu pre prípad, že je entry alebo array prázdne. Potom sa postupne porovnávajú prvky toho pola s hľadanou hodnotou a ak sa taký prvok nájde, vráti sa 0. Pre prípad, že ten cyklus prvok v poli nenájde, je na konci ešte jedno return.
Na první pohled to tak skoro vypadá, že? :o)
4.3.2013 19:05 potato
Rozbalit Rozbalit vše Re: Objasnění return
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě před returny: funkce
ARRAY=( "$@" )
je ztratit čas.

Funkce prvního returnu je, aby funkce selhala, když je první prvek pole prázdný. Což je nejspíš pitomost, autor chtěl napsat
[ ${#ARRAY[@]} = 0 ]...
ale popletl si to.

Funkce druhého returnu je, aby funkce selhala, když je první argument funkce prázdný. To mi přijde taky jako pitomost -- proč by nemělo jít hledat v poli prázdný prvek?

Funkce třetího returnu je, aby funkce uspěla, pokud argument funkce odpovídá některému slovu obsaženému v některé položce pole. Pokud chtěl autor porovnávat první argument fukce s prvky pole (nikoli se slovy v nich obsaženými), tak tohle domatlal taky.

Funkce posledního returnu je, aby funkce selhala, když nic nenajde.
6.3.2013 00:44 BLACK
Rozbalit Rozbalit vše Re: Objasnění return
Odpovědět | | Sbalit | Link | Blokovat | Admin
No a když tedy funkce vrací nějaký return, jak se pak takový return kontroluje?

Takto?
test "$?" = "0" && echo "alesgutes?" || echo "Něco je špatně"

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.