1
resposta

[Dúvida] Da para definir tipo de parâmetro?

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...

1 resposta

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!