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
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
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;
Podemos tranquilamente fazer isso com javascript :)
const hello = function(){
console.log("Olá Mundo ! :) ")
}
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!