Учебники

Эйфория — Функции

Функции Euphoria похожи на процедуры, но они возвращают значение и могут использоваться в выражении. Эта глава объясняет, как написать свои собственные функции в Euphoria.

Определение функции

Прежде чем использовать функцию, нам нужно ее определить. Наиболее распространенный способ определения функции в Euphoria — использование ключевого слова function , за которым следует уникальное имя функции, список параметров (который может быть пустым) и блок операторов, который заканчивается оператором завершения функции . Основной синтаксис показан здесь —

function functionname(parameter-list)

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

end function

пример

Здесь определена простая функция sayHello, которая не принимает параметров.

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

Вызов функции

Чтобы вызвать функцию где-то позже в скрипте, вам просто нужно написать имя этой функции следующим образом:

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

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

-- Call above defined function.
sayHello()

Это дает следующий результат —

Hello there

Параметры функции

До сих пор мы видели функцию без параметров. Но есть возможность передавать различные параметры при вызове функции. Эти переданные параметры могут быть захвачены внутри функции, и любые манипуляции с этими параметрами могут быть выполнены.

Функция может принимать несколько параметров, разделенных запятой.

пример

Давайте сделаем небольшую модификацию в нашей функции sayHello . На этот раз требуется два параметра —

#!/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)

Это дает следующий результат —

zara is 8 years old.

Заявление о возврате

Функция Euphoria должна иметь оператор return перед закрывающей функцией end оператора. Любой объект Euphoria может быть возвращен. По сути, вы можете иметь несколько возвращаемых значений, возвращая последовательность объектов. Например

return {x_pos, y_pos}

Если вам нечего вернуть, просто верните 1 или 0. Возвращаемое значение 1 указывает на успех, а 0 указывает на сбой