Funções em Clojure
6967 단어 functionalclojure
기능 정의
A criação de uma função é dividida em cinco partes, sendo elas:
Criando nossa Primeira função em Clojure:
(defn ola
"Função que retorna um texto de boas vindas!"
[nome]
(println "Olá, " nome))
Acima definimos o nome da nossa função como "ola", escrevemos uma documentação simples, passamos "nome"como parametro e criamos um corpo da função que imprime a frase retornada.
Invocando 기능:
(ola "Guilherme")
; Olá Guilherme
파라메트로스 에 아리다데
Em linguagens orientadas a objetos podemos ter metodos com o mesmo nome, porém com quantidade de parametros diferentes na mesma classe. Em Clojure, temos algo parecido. Podemos definir que uma função pode ter diferentes formas deimplementationação com diferentes aridades (número de parametros passados para a função), o que chamamos de sobrecarga de aridade (arity 오버로딩). Abaixo nossa função "ola"ganha novas aridades e para isso, devemos modificar um pouco a forma como escrevemos a função, envolvendo cada forma deimplementar com parênteses.
(defn ola
"Função que retorna um texto de boas vindas!"
([nome]
(println "Olá," nome))
([nome sobrenome]
(println "Olá," nome sobrenome))
([nome sobrenome idade]
(println "Olá," nome sobrenome ". Idade:" idade "anos")))
três formas로 사용 가능한 기능 사용:
(ola "Guilherme")
; Olá, Guilherme
(ola "Guilherme" "Rodrigues")
; Olá, Guilherme Rodrigues
(ola "Guilherme" "Rodrigues" 23)
; Olá, Guilherme Rodrigues . Idade: 23 anos
Clojure Também nos permite definir uma função com aridade variável através do parametro rest(휴식 매개변수). 나머지 매개변수를 사용할 수 있는 매개변수, 심볼로 사용 및 사용 금지 예시.
(defn imprime-nome [nome]
(println "Olá" nome))
(defn ola [& nomes]
(map imprime-nome nomes))
no exemplo acima definimos uma função chamada imprime-nome passando como parametro o nome. Utilizamos a função imprime-nome para mapear lista de argumentos e imprimi-los. Invocando a função com os parametros:
(ola "Guilherme" "João" "José")
; Olá Guilherme
; Olá João
; Olá José
Para utilizar rest parameter juntamente com outro parametro, devemos passa-los como ultimo parametro da função. 예:
(defn mostra-time [time & nomes]
(println "Os jogadores do" time "são: "
(clojure.string/join ", " nomes)))
Invocando a função:
(mostra-time "Real Madrid" "Benzema" "Casemiro" "Rodrigo")
; Os jogadores do Real Madrid são: Benzema, Casemiro, Rodrigo
데제스트루투라상
Clojure nos permite extrair valores dos parametros que são passados para a função utilizando um conceito chamado destructuring. 아니요 abaixo recuperamos apenas o primeiro elemento da coleção passada como parametro e retornamos o mesmo.
(defn primeiro-elemento [[primeiro-elemento]]
primeiro-elemento)
(primeiro-elemento ["Carro" "Bicicleta" "Caminhão"])
; "Carro"
클로저 사용 허가 및 사용 중지 매개변수 사용 가능 예시:
(defn dois-primeiros-elementos-e-resto [[primeiro segundo & resto]]
(println "Primeiro:" primeiro)
(println "Segundo:" segundo)
(println "Outros:")
(println (clojure.string/join ", " resto)))
(dois-primeiros-elementos-e-resto ["Carro" "Bicicleta" "Caminhão" "Metrô" "Ônibus"])
; Primeiro: Carro
; Segundo: Bicicleta
; Outros:
; Caminhão, Metrô, Ônibus
Também é possível utilizar desestruturação com mapas. abaixo os valores das chaves :nome e :sobrenome informadas são passados para os parametros nome e sobrenome:
(defn ola [{nome :nome sobrenome :sobrenome}]
(println "Nome:" nome)
(println "Sobrenome:" sobrenome))
(ola {:nome "Guilherme" :sobrenome "Rodrigues"})
; Nome: Guilherme
; Sobrenome: Rodrigues
코포 드 펑상
O corpo da função pode conter inúmeras formas dentro dele. Porem, Clojure retorna apenas a última expressão avaliada pela função. No exemplo abaixo temos diversas formas, porém apenas a última é retornada:
(defn corpo-funcao []
(+ 10 15)
"Corpo da função"
(* 100 12))
(corpo-funcao)
; 1200
Funções anonymas
Acima fizemos um exemplo utilizando a função map e passamos a função imprime-nome como parametro. Relembrando 기능:
(defn imprime-nome [nome]
(println "Olá" nome))
(defn ola [& nomes]
(map imprime-nome nomes))
Porém, em Clojure não é necessário que todas as funções tenham nomes, pois a linguagem nos possibilita utilizar funções anônimas. Vejamos abaixo como podemos utilizar funções anônimas nesse caso:
(defn ola [& nomes]
(map (fn [nome]
(println "Olá" nome)) nomes))
(ola "Guilherme" "João")
; Olá Guilherme
; Olá João
Como visto, para definir uma função anônima, trocamos o defn por fn, retiramos o nome da função e passamos como parametro de outra função. Porém, podemos diminuir mais um pouco a definição da função anônima. Para isso, deixamos de utilizar of fn, não definimos o nome do parametro e substituimos o parametro apenas por %. 예시: acima com função encurtada:
(defn ola [& nomes]
(map #(println "Olá" %) nomes))
(ola "Guilherme" "João")
; Olá Guilherme
; Olá João
Caso a função anônima receba mais de um parametro, é possível utiliza-los como no exemplo abaixo:
(#(+ %1 %2) 10 15)
;25
Espero que tenha gostado das funções em Clojure. Por enquanto é só e nos vemos em um futuro post. 아브라코스 :)
Reference
이 문제에 관하여(Funções em Clojure), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/guilhermelo/funcoes-em-clojure-2568
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(defn ola
"Função que retorna um texto de boas vindas!"
([nome]
(println "Olá," nome))
([nome sobrenome]
(println "Olá," nome sobrenome))
([nome sobrenome idade]
(println "Olá," nome sobrenome ". Idade:" idade "anos")))
(ola "Guilherme")
; Olá, Guilherme
(ola "Guilherme" "Rodrigues")
; Olá, Guilherme Rodrigues
(ola "Guilherme" "Rodrigues" 23)
; Olá, Guilherme Rodrigues . Idade: 23 anos
(defn imprime-nome [nome]
(println "Olá" nome))
(defn ola [& nomes]
(map imprime-nome nomes))
(ola "Guilherme" "João" "José")
; Olá Guilherme
; Olá João
; Olá José
(defn mostra-time [time & nomes]
(println "Os jogadores do" time "são: "
(clojure.string/join ", " nomes)))
Invocando a função:
(mostra-time "Real Madrid" "Benzema" "Casemiro" "Rodrigo")
; Os jogadores do Real Madrid são: Benzema, Casemiro, Rodrigo
Clojure nos permite extrair valores dos parametros que são passados para a função utilizando um conceito chamado destructuring. 아니요 abaixo recuperamos apenas o primeiro elemento da coleção passada como parametro e retornamos o mesmo.
(defn primeiro-elemento [[primeiro-elemento]]
primeiro-elemento)
(primeiro-elemento ["Carro" "Bicicleta" "Caminhão"])
; "Carro"
클로저 사용 허가 및 사용 중지 매개변수 사용 가능 예시:
(defn dois-primeiros-elementos-e-resto [[primeiro segundo & resto]]
(println "Primeiro:" primeiro)
(println "Segundo:" segundo)
(println "Outros:")
(println (clojure.string/join ", " resto)))
(dois-primeiros-elementos-e-resto ["Carro" "Bicicleta" "Caminhão" "Metrô" "Ônibus"])
; Primeiro: Carro
; Segundo: Bicicleta
; Outros:
; Caminhão, Metrô, Ônibus
Também é possível utilizar desestruturação com mapas. abaixo os valores das chaves :nome e :sobrenome informadas são passados para os parametros nome e sobrenome:
(defn ola [{nome :nome sobrenome :sobrenome}]
(println "Nome:" nome)
(println "Sobrenome:" sobrenome))
(ola {:nome "Guilherme" :sobrenome "Rodrigues"})
; Nome: Guilherme
; Sobrenome: Rodrigues
코포 드 펑상
O corpo da função pode conter inúmeras formas dentro dele. Porem, Clojure retorna apenas a última expressão avaliada pela função. No exemplo abaixo temos diversas formas, porém apenas a última é retornada:
(defn corpo-funcao []
(+ 10 15)
"Corpo da função"
(* 100 12))
(corpo-funcao)
; 1200
Funções anonymas
Acima fizemos um exemplo utilizando a função map e passamos a função imprime-nome como parametro. Relembrando 기능:
(defn imprime-nome [nome]
(println "Olá" nome))
(defn ola [& nomes]
(map imprime-nome nomes))
Porém, em Clojure não é necessário que todas as funções tenham nomes, pois a linguagem nos possibilita utilizar funções anônimas. Vejamos abaixo como podemos utilizar funções anônimas nesse caso:
(defn ola [& nomes]
(map (fn [nome]
(println "Olá" nome)) nomes))
(ola "Guilherme" "João")
; Olá Guilherme
; Olá João
Como visto, para definir uma função anônima, trocamos o defn por fn, retiramos o nome da função e passamos como parametro de outra função. Porém, podemos diminuir mais um pouco a definição da função anônima. Para isso, deixamos de utilizar of fn, não definimos o nome do parametro e substituimos o parametro apenas por %. 예시: acima com função encurtada:
(defn ola [& nomes]
(map #(println "Olá" %) nomes))
(ola "Guilherme" "João")
; Olá Guilherme
; Olá João
Caso a função anônima receba mais de um parametro, é possível utiliza-los como no exemplo abaixo:
(#(+ %1 %2) 10 15)
;25
Espero que tenha gostado das funções em Clojure. Por enquanto é só e nos vemos em um futuro post. 아브라코스 :)
Reference
이 문제에 관하여(Funções em Clojure), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/guilhermelo/funcoes-em-clojure-2568
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(defn corpo-funcao []
(+ 10 15)
"Corpo da função"
(* 100 12))
(corpo-funcao)
; 1200
Acima fizemos um exemplo utilizando a função map e passamos a função imprime-nome como parametro. Relembrando 기능:
(defn imprime-nome [nome]
(println "Olá" nome))
(defn ola [& nomes]
(map imprime-nome nomes))
Porém, em Clojure não é necessário que todas as funções tenham nomes, pois a linguagem nos possibilita utilizar funções anônimas. Vejamos abaixo como podemos utilizar funções anônimas nesse caso:
(defn ola [& nomes]
(map (fn [nome]
(println "Olá" nome)) nomes))
(ola "Guilherme" "João")
; Olá Guilherme
; Olá João
Como visto, para definir uma função anônima, trocamos o defn por fn, retiramos o nome da função e passamos como parametro de outra função. Porém, podemos diminuir mais um pouco a definição da função anônima. Para isso, deixamos de utilizar of fn, não definimos o nome do parametro e substituimos o parametro apenas por %. 예시: acima com função encurtada:
(defn ola [& nomes]
(map #(println "Olá" %) nomes))
(ola "Guilherme" "João")
; Olá Guilherme
; Olá João
Caso a função anônima receba mais de um parametro, é possível utiliza-los como no exemplo abaixo:
(#(+ %1 %2) 10 15)
;25
Espero que tenha gostado das funções em Clojure. Por enquanto é só e nos vemos em um futuro post. 아브라코스 :)
Reference
이 문제에 관하여(Funções em Clojure), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/guilhermelo/funcoes-em-clojure-2568텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)