Функции являются строительными блоками программы Elm. Функция — это набор операторов для выполнения конкретной задачи.
Функции организуют программу в логические блоки кода. После определения функции могут вызываться для доступа к коду. Это делает код многоразовым. Кроме того, функции позволяют легко читать и поддерживать код программы.
Шаги к использованию функции
Есть три шага к использованию функции —
Объявление функции
Объявление функции сообщает компилятору об имени функции, типе возврата и параметрах. Синтаксис объявления функции приведен ниже —
fn_name:data_type_of_the_parameters ->return_type
Объявление функции определяет следующее —
-
Наименование функции.
-
Тип данных параметров. Это необязательно, так как функция может иметь или не иметь параметры.
-
Тип данных значения, которое будет возвращать функция. Функции в Elm всегда должны возвращать значение, так как Elm — это функциональный язык программирования. В отличие от функций в других языках программирования, функции Elm не используют ключевое слово return для возврата значения.
Наименование функции.
Тип данных параметров. Это необязательно, так как функция может иметь или не иметь параметры.
Тип данных значения, которое будет возвращать функция. Функции в Elm всегда должны возвращать значение, так как Elm — это функциональный язык программирования. В отличие от функций в других языках программирования, функции Elm не используют ключевое слово return для возврата значения.
Определение функции или реализация функции
Определение функции обеспечивает фактическое тело функции. Определение функции определяет, как будет выполнена конкретная задача. Синтаксис для определения функции приведен ниже:
fn_name parameter1 parameter2 = statements
Вызов или вызов функции
Функция должна быть вызвана для ее выполнения. Синтаксис для вызова функции приведен ниже —
fn_name parameter1 parameter2
иллюстрация
Следующий код определяет функцию greet. Функция возвращает строку «Hello».
> greet = \ | if True then \ | "Hello" \ | else \ | "GoodBye" "Hello" : String > greet "Hello" : String
Параметризованные функции
Параметры — это механизм для передачи значений в функцию. Значения параметров передаются в функцию во время вызова функции.
Иллюстрация 1
В следующем примере определяется функция fn_add . Функция принимает два числа в качестве параметров и возвращает их сумму. Попробуйте следующее в вязе REPL —
> fn_add x y = x+y <function> : number -> number -> number > fn_add 10 20 30 : number
Иллюстрация 2
В следующем примере определяется функция sayHello. Функция sayHello принимает и возвращает значение String в качестве параметра и возвращает String.
> sayHello name = "Hello "++ name <function> : String -> String > sayHello "Tutorialspoint" "Hello Tutorialspoint" : String >
Трубный оператор
Чтобы понять pipe pipe |>, давайте рассмотрим пример, где у нас есть список различных строк [«a», «b», «c»] . Теперь нам нужна одна строка, которая отделена от —
В следующем примере показано, как это сделать с помощью String.join.
> String.join "-" ["a","b","c","d","e","f"] "a-b-c-d-e-f" : String
То же действие можно выполнить с помощью оператора pipe |>. Оператор канала может использоваться для объединения нескольких вызовов функций.
> ["a","b","c","d","e","f"] |> String.join "-" "a-b-c-d-e-f" : String > ["a","b","c","d","e","f"] |> List.reverse |> String.join "-" "f-e-d-c-b-a" : String
В первом примере мы объединяем метод list в метод join. Во втором случае тот же список передается для переворота функции, а затем передается для присоединения. Итак, список отображается в перевернутом и объединенном виде.