Euforia - funkcje

Funkcje euforii są podobne do procedur, ale zwracają wartość i mogą być używane w wyrażeniu. W tym rozdziale wyjaśniono, jak pisać własne funkcje w Euphoria.

Definicja funkcji

Zanim użyjemy funkcji, musimy ją zdefiniować. Najczęstszym sposobem definiowania funkcji w Euphorii jest użycie rozszerzeniafunction słowo kluczowe, po którym następuje unikalna nazwa funkcji, lista parametrów (która może być pusta) i blok instrukcji kończący się na end functionkomunikat. Poniżej przedstawiono podstawową składnię -

function functionname(parameter-list)

   statements
   ..........
   return [Euphoria Object]

end function

Przykład

W tym miejscu zdefiniowano prostą funkcję o nazwie sayHello, która nie przyjmuje parametrów -

function sayHello()
   puts(1, "Hello there")
   return 1
end function

Wywołanie funkcji

Aby wywołać funkcję gdzieś później w skrypcie, wystarczyłoby napisać nazwę tej funkcji w następujący sposób -

#!/home/euphoria-4.0b2/bin/eui

function sayHello()
   puts(1, "Hello there")
   return 1
end function

-- Call above defined function.
sayHello()

Daje to następujący wynik -

Hello there

Parametry funkcji

Do tej pory widzieliśmy funkcję bez parametrów. Istnieje jednak możliwość przekazywania różnych parametrów podczas wywoływania funkcji. Te przekazane parametry można przechwycić wewnątrz funkcji i można na nich wykonać dowolną manipulację.

Funkcja może przyjmować wiele parametrów oddzielonych przecinkami.

Przykład

Zróbmy trochę modyfikacji w naszej funkcji sayHello . Tym razem wymaga dwóch parametrów -

#!/home/euphoria-4.0b2/bin/eui

function sayHello(sequence name,atom  age)
   printf(1, "%s is %d years old.", {name, age})
   return 1
end function

-- Call above defined function.
sayHello("zara", 8)

Daje to następujący wynik -

zara is 8 years old.

Zwrotny komunikat

Funkcja Euphoria musi mieć instrukcję return przed instrukcją zamykającąend function. Każdy obiekt Euphoria może zostać zwrócony. W efekcie możesz mieć wiele zwracanych wartości, zwracając sekwencję obiektów. Na przykład

return {x_pos, y_pos}

Jeśli nie masz nic do zwrócenia, po prostu zwróć 1 lub 0. Zwracana wartość 1 oznacza sukces, a 0 oznacza niepowodzenie