Olá pessoal,
Me surgiu uma duvida durante os estudos.... Em clojure é possível definir qual o tipo de parâmetro será passado na função? Ex: Inteiro, Decimal, Boleano...
Olá pessoal,
Me surgiu uma duvida durante os estudos.... Em clojure é possível definir qual o tipo de parâmetro será passado na função? Ex: Inteiro, Decimal, Boleano...
Olá, Gabriel.
tdu oebm?
Em Clojure, por ser uma linguagem dinâmica, não é comum definir explicitamente o tipo dos parâmetros das funções como em linguagens estáticas. No entanto, você pode utilizar algumas abordagens para garantir que os parâmetros sejam de tipos específicos.
Uma maneira é usar a biblioteca clojure.spec
para especificar e validar os tipos dos dados. Aqui está um exemplo de como você pode fazer isso:
(require '[clojure.spec.alpha :as s])
; Define um spec para um número inteiro
(s/def ::inteiro int?)
; Define um spec para um número decimal
(s/def ::decimal float?)
; Define um spec para um booleano
(s/def ::booleano boolean?)
; Função que usa os specs para validar os parâmetros
(defn minha-funcao [a b c]
(s/valid? ::inteiro a)
(s/valid? ::decimal b)
(s/valid? ::booleano c)
(println "Todos os parâmetros são válidos!"))
; Chamando a função com parâmetros válidos
(minha-funcao 1 2.0 true) ; Output: Todos os parâmetros são válidos!
Neste exemplo, os specs são definidos para tipos específicos e a função minha-funcao
valida os parâmetros antes de prosseguir.
Outra abordagem é usar assert
para verificar os tipos dos parâmetros diretamente dentro da função:
(defn minha-funcao [a b c]
(assert (integer? a) "O parâmetro 'a' deve ser um inteiro")
(assert (float? b) "O parâmetro 'b' deve ser um decimal")
(assert (boolean? c) "O parâmetro 'c' deve ser um booleano")
(println "Todos os parâmetros são válidos!"))
; Chamando a função com parâmetros válidos
(minha-funcao 1 2.0 true) ; Output: Todos os parâmetros são válidos!
Neste caso, se algum parâmetro não for do tipo esperado, uma exceção será lançada com a mensagem especificada.
Seria isso? Espero ter ajudado. Qualquer dúvida manda aqui.
Bons estudos!