4
respostas

Ajuda para entender parâmetros de funções;

Gente, não tem jeito de eu entender, a Lógica do uso de parâmetros de funções;

Como no código a seguir.

class Negociacoes {

    private _negociacoes: Negociacao[] = [];

    adiciona(negociacao: Negociacao) {  //COMO ESTES PARAMETROS!

        this._negociacoes.push(negociacao);
    }

    paraArray() {

        return [].concat(this._negociacoes);
    }
}

Eu vejo na web, ate usei o forum, e entendi o uso de parametros, mas quando me deparo com isso, me embaralha tudo , e volto a nao entender. ME ajudem por favor,

4 respostas

Fala aí Felipe, beleza? Realmente, no início tudo é complicado mesmo, normal, faz parte do aprendizado.

Bom, vamos lá:

No exemplo que você mandou, precisamos passar uma classe do tipo Negociacao para o método adiciona.

const negociacao1 = new Negociacao()

Até o momento, nossa variável negociacao1 que é um objeto do tipo Negociacao, não possuí nenhuma Negociacao, isso porque por padrão, para novas instâncias dessa classe o valor é []:

private _negociacoes: Negociacao[] = [];

Agora, para adicionarmos nova negociações para nossa Negociacao atual, precisamos utilizar o método adiciona.

negociacao1.adiciona(new Negociacao())
negociacao1.adiciona(new Negociacao())
negociacao1.adiciona(new Negociacao())

Obs: Em vez de armazenar uma nova Negociacao dentro de uma variável, simplesmente passamos ela para a função e ela será dentro do nosso parâmetro.

Agora temos três negociações para nosso objeto.

Espero ter ajudado.

Olá Matheus. Primeiramente, agradeço o seu tempo para me ajudar;

Então, entendi em partes sua explicação, entendo que os parâmetros são para executar a tarefa uma serie de vezes, sem precisar repetir código, certo? entendi também, que o parâmetro recebe o tipo , mas não entendi ao certo como usar ele, o real motivo e quando eu devo utilizar. Preciso muito entender isso, para dar seguimento aos estudos.

Fala aí Felipe, beleza? Basicamente você precisa passar parâmetros para uma função quando ela depende de dados externos, ou seja, informações que não fazem parte do seu contexto.

Isso envolveria outras discussões como funções puras ou impuras, mas, fica para um segundo momento.

De forma bem simples e resumida eu diria isso: Precisa de dados externos para executar algum trecho de código dentro da sua função? Então passe-os via parâmetros.

Espero ter ajudado.

Opa, tudo bom Felipe?

Então, essa confusão é normal no início, mas não tem nada de mais nisso, vou tentar te explicar de uma maneira mais esmiuçada.

Os parâmetros estão segmentados da seguinte forma:

A função que o possui, Recebe um parâmetro.

Quem chama a função, Passa um parâmetro.

Agora um exemplo:

Vamos supor que você queira calcular o IMC de uma pessoa. Esta pessoa, possui peso e altura, como descrito abaixo:

Pessoa { peso : 80, altura : 2.0, imc : 0 } 

Ao capturar estes valores você teria algo do tipo:

var pesoPessoa = Pessoa.peso;
var alturaPessoa = Pessoa.altura;

E você também teria que ter o imc dessa pessoa, como no código abaixo:

var imcPessoa = Pessoa.imc;

Porém, você só precisa alterar este valor do imc, então para separar o código, você cria uma função que recebe como parâmetro o peso e a altura para calcular o imc.

function CalcularImc(peso, altura){
    return peso / (altura * altura);
}

Essa função, vai receber como parâmetro, tuas duas variáveis (pesoPessoa e alturaPessoa)

Agora veja como ficária no código:

Pessoa { peso : 80, altura : 2.0, imc : 0 } 
var pesoPessoa = Pessoa.peso;
var alturaPessoa = Pessoa.altura;
// Agora, ao envés de criarmos uma váriável para capturar o imc da pessoa, fazemos isso diretamente:
Pessoa.imc = CalcularImc(pesoPessoa , alturaPessoa );

function CalcularImc(peso, altura){
    return peso / (altura * altura);
}

Explicação:

Ao Enviar os parâmetros pesoPessoa e alturaPessoa, que respectivamente representam 80 e 2.0 para a função CalcularImc o calculo seria efetuado

Agora repare que esta função retorna o resultado do calculo 80 / (2 * 2), que no caso seria 20.

Então, esse valor que é Retornado pela função (20), é atribuído ao:

Pessoa.imc = CalcularImc(pesoPessoa , alturaPessoa );

De outra maneira, isso significaria o seguinte:

Pessoa.imc = CalcularImc(80, 2.0);

Logo:

Pessoa.imc = 20;

Se você quisesse reutilizar essa função para calcular o IMC de outra Pessoa, não precisaria repetir o calculo, bastaria capturar as informações da outra Pessoa e envia-las como parâmetro do CalcularImc.

Para resumir tudo, você utiliza os parâmetros para encapsular informações, ao envés de deixa-las no Escopo-Global.

Quando uma função não tem acesso as variáveis de outro bloco de função, você passa como parâmetro.

Supondo que você tenha capturado uma informação muito grande em um escopo de uma função, e deseja manipular esta informação numa função reutilizavel, é muito melhor passa-la como parâmetro, do que ter que capturar toda essa informação gigantesca na função. Isto é só um exemplo, mas existem diversos outros casos.

Espero ter ajudado.