1
resposta

Dúvida if

Galera, fiquei em dúvida no seguinte trecho:

"(if (aplica-desconto? valor-bruto)"

O que aquele if está fazendo ali? Aplica-desconto? é um parametro ou uma função? Qual é o resultado que todo o conjunto dá como resposta?

(defn valor-descontado
  "Retorna o valor com desconto de 10% se o valor bruto for estritamente maior que 100."
  [valor-bruto]
  **(if (aplica-desconto? valor-bruto)**
    (let [taxa-de-desconto (/ 10 100)
          desconto         (* valor-bruto taxa-de-desconto)]
      (- valor-bruto desconto))
    valor-bruto))

(println (valor-descontado 1000))

(println (valor-descontado 100))

Me perdi nesse trecho.

Obrigado!

1 resposta

aplica-desconto? é sim uma função, e como podemos ver ele inclusive utiliza os parênteses para invocação da função.

Basicamente o que aplica-desconto? faz é decidir se o valor tem desconto ou não, o que de acordo com as regras do problema, será verdadeiro caso o valor seja maior do que 100 reais.

Como esta função retorna um boolean (true ou false), este valor é o que de fato será avaliado para decidir a condicional. A indentação no mesmo nível do if é o que representa os blocos de then e else respectivamente. Se o desconto se aplicar, entra na linha 5 do código; Se o desconto não se aplicar, entra na linha 8 do código.

Faz sentido?