Bill Helper pt-br Explainer

Explicação de Auxiliar de conta

Objetivo do desafio: Use uma função auxiliar dentro de outra função.

Passo a passo da solução: Ao criar uma função complexa, o código fica facilmente cada vez mais longo e mais difícil de ler.

Quando isso acontece, é útil dividir grandes funções em funções menores e usar estas últimas como “auxiliares” de uma função principal. Isso mantém a função principal mais legível.

Neste desafio, uma função chamada calculateTax() é importada de um código adicional. Essa função pode ser usada para ajudar na função splitBill() do desafio.

Para concluir o desafio, crie uma nova variável dentro da função e dê a ela calculateTax(total) como um valor. Por exemplo:


let tax = calculateTax(total);

Então, dentro da função, adicione a variável a total usando o operador +=.

Por último, retorne o total dividido por people.

Solução do código de exemplo:


import { calculateTax } from 'grasshopper.helperFunctions';

function splitBill(total, people) {

let tax = calculateTax(total)

total += tax;

return total / people;

}

console.log(splitBill(76, 4));

Conceitos de JavaScript: Funções, Funções auxiliares, console.log(), Variáveis, Variáveis locais, Comando de retorno, Importações, += Operador

Código Adicional (código oculto executado antes do código do desafio):


let calculateTax = total => {

return total * 0.15;

};

16 Likes

Muito muito muito obrigado, vendo a reapostá eu percebi o meu vacilo, não tava pegando a interpretação dessa lição.

15 Likes

pois eu ainda não pequei kkkkk

4 Likes

Rapaz, quebrei a cabeça nisso e ainda to boiando também

4 Likes

como foi esta questao?

Como eu também fiquei um tempão tentando entender e finalmente entendi, vou TENTAR explicar como funcionou pra mim, comentando o código linha a linha, ok?

import { calculateTax } from ‘grasshopper.helperFunctions’;

Importou a função “calculateTax” de outro lugar. O quê essa função faz? Pelo nome, calcula a taxa, mas não sabemos exatamente como ele faz, porque não temos acesso à função em si. Mas basicamente seria o nosso cálculo dos 10% da conta, ok?

function splitBill(total, people) {

Declaramos a função “splitBill”, que terá como parâmetros “total” e “people”, que serão o total da conta e o número de pessoas pelo qual a conta será dividida
LEMBRANDO QUE: estamos apenas DECLARANDO a função, ela não é executada agora (e nem teria como ser executada agora, como vamos ver a frente)

let tax = calculateTax(total)

Criamos uma variável local chamada “tax” e atribuímos a ela o valor que será calculado através da função “calculateTax” com o valor total da conta como argumento.
Lembra que eu disse estarmos apenas DECLARANDO e não executando? No momento, ainda não sabemos que valor é esse de “total”, então não teria como executar. É justamente aí que muita gente (inclusive eu) se confunde na parte de declaração de funções. É como se nós estivéssemos criando todo um molde do que vamos executar, mas, na verdade, só vai ser executado lá frente, com os argumentos que vamos receber para rodar essa função.

total += tax;

Usamos a atribuição de adição para adicionar o valor calculado de “tax” (que foi calculado na linha anterior) ao valor que já existe em total. Ou seja, se calculamos 4 como tax e o total era 76, o novo total será 80

return total / people;

Retornamos o valor “total” (que na linha anterior já acrescentamos a taxa) dividido pelo “people”, que é o número de pessoas.

--------------------------------- Final da Declaração da Função ---------------------------------------

----------------------------------------- Execução do código ----------------------------------------------

console.log(splitBill(76, 4));

Chamamos a função “splitBill” com os argumentos “76” (para o total) e “4” (para o people).
AGORA SIM o código da função splitBill será executado, com os argumentos se encaixando nos campos da função declarada.

Espero ter ajudado!

40 Likes

Valeu pela explicação. Obrigado

3 Likes

Cara, eu te amo! Rs …

4 Likes

Hahahahah declarações de amor num fórum de programação

5 Likes

Não consigo resolver essa de jeito nenhum :disappointed:
Já tá me dando raiva

2 Likes

não entendi o porquê, isso ta dificultando aprendizado

1 Like

Viu a resposta que eu deixei a cima? Expliquei linha por linha, vê se te ajuda.

Viu a resposta que eu deixei a cima? Dá uma olhadinha, expliquei linha por linha, vê se te ajuda.

1 Like

Olá!
Consegui obrigada :blush:

2 Likes

obrigado cara, explicou direitinho, bem detalhado

2 Likes

Obrigada pela explicação! :slightly_smiling_face:

2 Likes

Eu fiz igualzinho mas o jogo nao funciona

1 Like

Para quem não conseguir resolver, o código está com um bug, mas já atualizaram, é só usar a opção de reset que o código vai atualizar de “Import {tax} from…” Para “import {calculate Tax}” que é o código necessário, e então é só resolver normalmente.

3 Likes

Criar a variavel é (let= tax) de taxa e quando diz armazena e dentro da variavel e fica como diz ali (let tax= calculatetax( total ) e abaixo atualizar valor (total+=tax)

Demorei entender, mais quando consegui fazer vi que era tudo interpretação do texto que explica, mais é confuso até fazer hehe.

2 Likes

aindaao sei no que to errando.

achei falto eu coloar o total no ()