Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

First Class Functions

Oi gente,O instrutor falou sobre First Class Functions mas é um conceito que, apesar de já ter ouvido antes, nunca entendi muito bem o que isso significa. Alguém saberia dar uma luz?

Obrigado

1 resposta
solução!

Olá Luis, tudo bem com você?

Dizemos que uma linguagem contém Funções de Primeira Classe dependendo da maneira como ela trabalha com as funções

Normalmente isso quer dizer que a linguagem trabalha com funções da mesma maneira que trabalha com qualquer variável, coisa que não acontecem com todas linguagens, então algumas características básicas de Funções de Primeira Classe;

  • Podem ser guardadas em variáveis

Podemos tranquilamente fazer isso com javascript :)

const hello = function(){
    console.log("Olá Mundo ! :) ")
}
  • Podemos colocar em estrutura de dados

Em javascript podemos adicionar uma função em um objeto, ou em um array, por exemplo :

const array = [ 1, 2, 3, function(){ console.log("Aqui")}]

array[3]()
>> "Aqui"

const estrutura = {
    funcao: function(){
            return 5 + 5;
    },
    chave: "valor"
}

estrutura.funcao()
>> 10

E agora as partes mais importantes que sempre são mencionadas quando estamos tratando de Funções de Primeira Classe, que é o fato de podermos passar funções como parâmetro, e retornar funções:

function calculadora( operacao, valor1, valor2){
    return operacao(valor1, valor2);
}

Podemos fazer tranquilamente:

const somar = function(valor1, valor2){
    return valor1 + valor2;
}
const multiplicar = function(valor1, valor2){
    return valor1 * valor2;
}

calculadora(somar, 5, 10)
>> 15
calculadora(multiplicar, 5, 10)
>> 50
`

Desa maneira conseguimos uma flexibilidade incrível na medida em que podemos reutilizar a função

Também podemos fazer:

const somaValor = function(valor){
        return function(valor2){
                return valor + valor2;
        }
}

const soma5 = somaValor(5);
const soma10 = somaValor(10);
soma5(50)
>> 55

soma10(50)
>> 60

Óbvio que esses são exemplos bem simples mas o que importa de fato é essa flexibilidade que a ferramenta nos permite trabalhar com funções ( que é o que de fato torna uma linguagem com funções sendo cidadã de primeira classe), da mesma maneira como se fosse um valor numérico ou uma String :)

Abraços e Bons Estudos!