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.