📝Aula + Checklist: Criando seu Mini Aplicativo com IA 💻

Conceitos de Programação Funcional com Scala

Publicado em 05/10/2016

Atualizado em 04/06/2024

Quando falamos em programação em geral, vários paradigmas costumam aparecer. Ultimamente a programação funcional tem sido mencionada bastante em conferências e artigos. O fato é que hoje poucos desenvolvedores conhecem de fato esse paradigma. O mercado é focado na abordagem imperativa (orientada a objetos), entretanto, vários conceitos utilizados em API’s e bibliotecas que são escritas OO, vem da programação funcional. Programação funcional é um paradigma onde o código é composto de várias expressões (pode se pensar em funções que recebem um valor e sempre retornam algum valor) e não declarações, evitando ao máximo a mudança de estado de objetos e variáveis mutáveis. Então, ao utilizar Scala, você deve programar “orientado a expressões”.

No Scala, alguns blocos de controle como if retornam valores, por exemplo:

fidelis

Como pode ver, if no scala é uma expressão. Similar ao if utilizado em linguagens como Java, que utiliza o operador “? :” para retornar valor. Um conceito chave é perceber que não é necessário utilizar a palavra “return”. Uma expressão sempre vai retornar um valor. Enquanto em Java é pratica comum utilizar return para qualquer método. Em Scala, a ultima instrução da função será a instrução que retornara o valor. Abaixo um exemplo.

Java

fidelis2

Aqui definimos a função para mapear um código de erro a uma mensagem. Em Scala match é equivalente ao “switch” do Java. Caso não encontre, ele vai cair no “case _” que seria equivalente ao “default”.

Scala

fidelis3

Percebemos que ao invés de utilizar “var” foi usado “val”. Isso faz com que o “result” se torne imutável. E por segundo, ao utilizar match (que é uma expressão equivalente ao switch case) por padrão irá retornar o valor que cair no case. Logo, reduzimos o tamanho e complexidade do código e aumentamos a imutabilidade do programa.

Imutabilidade é um dos fundamentos da programação funcional e uma boa prática para orientação a objeto utilizando JVM. Como regra geral, criar classes imutáveis reduz o número de possíveis bugs em runtime.

A vantagem disso é que facilita para o programador avaliar o resultado de expressões e expressões concorrentes. Scala não é uma linguagem totalmente funcional, ela incorpora elementos de OO como classes, objetos, polimorfismo. A linguagem já está na versão 2.11.8 e roda em cima da JVM que por si só traz grandes otimizações para o código.

Caso tenha se interessado, recomendo muito o livro “Scala in Depth”, e um curso disponibilizado gratuitamente pelo portal Coursera.

O que você achou deste conteúdo?

O que você achou deste conteúdo?

Bruno
Bruno Fidelis
Estudante de ciência da computação. Atualmente trabalha como desenvolvedor web na KingHost. Gosta de estudar novas tecnologias e criar soluções inteligentes a partir delas.
Bruno
Bruno Fidelis
Estudante de ciência da computação. Atualmente trabalha como desenvolvedor web na KingHost. Gosta de estudar novas tecnologias e criar soluções inteligentes a partir delas.

Compartilhe esse conteúdo com alguém que possa gostar também

Receba todo mês conteúdos
incríveis como esses para
seguir evoluindo

Conteúdos relacionados

O Git se estabeleceu como uma ferramenta indispensável para pessoas desenvolvedoras que desejam gerenciar e versionar seus códigos com agilidade e segurança.  Desde o seu surgimento, ele transformou a forma como trabalhamos de maneira colaborativa em projetos de software – seja em pequenos times ou em grandes empresas.  Neste artigo, vamos explorar os principais comandos...
JavaScript é uma das linguagens de programação mais populares do mundo, amplamente utilizada para o desenvolvimento de aplicações web dinâmicas. Assim, para facilitar o trabalho nesta área, diversas bibliotecas JavaScript foram criadas.  Neste artigo, vamos explorar o que são bibliotecas JavaScript, como utilizá-las e quais são as principais opções disponíveis no mercado. Você vai ter...
No cenário tecnológico em constante evolução, a busca por eficiência, agilidade e entrega contínua de valor se tornou primordial. É nesse contexto que o DevOps emerge como uma abordagem revolucionária, unindo as equipes de desenvolvimento (Dev) e operações (Ops) em prol de um objetivo comum: o sucesso do produto e a satisfação do cliente. Neste...

Mensagens para você