Учебники

Вяз — Функции

Функции являются строительными блоками программы 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. Во втором случае тот же список передается для переворота функции, а затем передается для присоединения. Итак, список отображается в перевернутом и объединенном виде.