Elm - Funções

Funções são os blocos de construção de um programa Elm. Uma função é um conjunto de instruções para realizar uma tarefa específica.

As funções organizam o programa em blocos lógicos de código. Uma vez definidas, as funções podem ser chamadas para acessar o código. Isso torna o código reutilizável. Além disso, as funções facilitam a leitura e a manutenção do código do programa.

Etapas para usar uma função

Existem três etapas para usar uma função -

Declaração de Função

Uma declaração de função informa ao compilador sobre o nome de uma função, tipo de retorno e parâmetros. A sintaxe para declarar uma função é fornecida abaixo -

fn_name:data_type_of_the_parameters ->return_type

A declaração da função especifica o seguinte -

  • Nome da função.

  • Tipo de dados dos parâmetros. Isso é opcional, pois uma função pode ou não ter parâmetros.

  • Tipo de dados do valor que a função retornará. As funções no Elm devem sempre retornar um valor, pois Elm é uma linguagem de programação funcional. Ao contrário das funções em outras linguagens de programação, as funções Elm não usam a palavra-chave return para retornar um valor.

Definição ou implementação de função

Uma definição de função fornece o corpo real da função. Uma definição de função especifica como uma tarefa específica seria realizada. A sintaxe para definir uma função é fornecida abaixo -

fn_name parameter1 parameter2 = statements

Invocar ou Chamar uma Função

Uma função deve ser chamada para executá-la. A sintaxe para chamar uma função é fornecida abaixo -

fn_name parameter1 parameter2

Ilustração

O código a seguir define uma saudação de função. A função retorna uma string "Hello".

> greet = \
| if True then \
| "Hello" \
| else \
| "GoodBye"
"Hello" : String
> greet
"Hello" : String

Funções Parametrizadas

Os parâmetros são um mecanismo para passar valores para uma função. Os valores dos parâmetros são passados ​​para a função no momento da chamada da função.

Ilustração 1

O exemplo a seguir define uma função fn_add . A função aceita dois números como parâmetros e retorna sua soma. Tente o seguinte no elm REPL -

> fn_add x y = x+y
<function> : number -> number -> number
> fn_add 10 20
30 : number

Ilustração 2

O exemplo a seguir define uma função sayHello. A função sayHello aceita e retorna um valor String como parâmetro e retorna uma String.

> sayHello name = "Hello "++ name
<function> : String -> String
> sayHello "Tutorialspoint"
"Hello Tutorialspoint" : String
>

Operador de tubulação

Para entender o operador de tubo |>, vamos considerar um exemplo em que temos uma lista de diferentes strings ["a", "b", "c"] . Agora precisamos de uma única string, que é separada por -

O exemplo a seguir mostra como fazer isso com String.join

> String.join "-" ["a","b","c","d","e","f"]
"a-b-c-d-e-f" : String

A mesma ação pode ser executada usando um operador de pipe |>. O operador de pipe pode ser usado para encadear várias chamadas de função.

> ["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

No primeiro exemplo, estamos encadeando o método list to join. No segundo caso, a mesma lista é canalizada para reverter a função e, posteriormente, canalizada para unir. Portanto, a lista é exibida invertida e unida.