0Pricing
Scala for Backend Engineering & Functional Programming · Aula

Expressões em vez de instruções

Tudo retorna um valor.

Expressões em vez de instruções é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Scala for Backend Engineering & Functional Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.

Tudo é uma expressão

Em muitas linguagens, if e blocos são instruções que fazem algo, mas não produzem nenhum valor. Em Scala, eles são expressões que resultam em um valor.

Essa mudança está no centro da programação funcional em Scala.

val max = if (3 > 2) 3 else 2

if como expressão

Um if/else em Scala retorna o valor do ramo executado. Você pode atribuir esse resultado diretamente a um val.

Não é necessário usar uma variável mutável que você atribui dentro dos ramos.

object Main extends App {
  val temp = 18
  val label = if (temp > 20) "warm" else "cool"
  println(label)
}

Blocos retornam sua última linha

Um bloco { ... } é uma expressão por si só. Seu valor é o valor da última expressão dentro dele.

Aqui, o bloco resulta em 30, que se torna o valor de result.

object Main extends App {
  val result = {
    val a = 10
    val b = 20
    a + b
  }
  println(result)
}

Nenhum return explícito é necessário

Como o corpo de um método é uma expressão, seu valor é simplesmente o da última expressão avaliada. A palavra-chave return raramente é usada.

Os dois métodos abaixo se comportam da mesma forma, mas o idiomático omite return.

def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }

match também é uma expressão

A correspondência de padrões com match também produz um valor, sendo perfeita para mapear entradas em resultados.

Cada ramo de caso produz o valor correspondente àquele ramo.

object Main extends App {
  val day = 3
  val name = day match {
    case 1 => "Mon"
    case 3 => "Wed"
    case _ => "Other"
  }
  println(name)
}

Expressões podem ser compostas

Como as expressões retornam valores, você pode aninhá-las e combiná-las livremente.

Um if pode ser o argumento de uma função ou fazer parte de um cálculo maior, sem variáveis temporárias.

object Main extends App {
  val n = 7
  println("sign: " + (if (n >= 0) "+" else "-"))
}

As instruções ainda existem

Nem tudo produz um valor útil. Operações realizadas apenas por seus efeitos colaterais, como println ou uma atribuição, resultam em Unit.

Essas são as expressões semelhantes a instruções do Scala.

val x: Unit = println("hello") // value is ()

Evite var com expressões

O estilo baseado em expressões permite substituir padrões mutáveis com var. Em vez de declarar um var e atribuí-lo nos ramos, atribua o if inteiro a um val.

object Main extends App {
  val score = 85
  val grade = if (score >= 90) "A" else if (score >= 80) "B" else "C"
  println(grade)
}

for produz valores

Um for com yield é uma expressão que cria uma nova coleção, em vez de apenas fazer um loop para produzir efeitos colaterais.

Isso transforma a iteração em uma transformação que produz um valor.

object Main extends App {
  val squares = for (i <- 1 to 4) yield i * i
  println(squares)
}

Por que isso é importante no código de backend

O código orientado a expressões tende a ser mais curto, ter menos elementos móveis e ser mais fácil de testar.

  • Menos variáveis mutáveis significam menos erros.
  • Os resultados fluem naturalmente a partir das entradas.
  • Ele se combina bem com as bibliotecas funcionais do Scala.

Estilo de instruções vs. estilo de expressões

Compare as duas formas de pensar. O estilo de instruções modifica uma variável; o estilo de expressões retorna um valor diretamente.

Scala permite fazer as duas coisas, mas prefere o estilo de expressões.

var s = ""            // statement style
if (true) s = "yes" else s = "no"

val e = if (true) "yes" else "no" // expression style

Verificação rápida

Para o que um if/else é avaliado em Scala?

Recapitulação

Scala favorece expressões que produzem valores em vez de instruções que apenas modificam o estado.

  • if, match, blocos e for/yield retornam valores.
  • Os corpos dos métodos retornam sua última expressão; return raramente é necessário.
  • O código que produz efeitos colaterais retorna Unit.
  • Esse estilo reduz o uso de var e a quantidade de erros.

Perguntas Frequentes

A aula “Expressões em vez de instruções” é grátis?

Sim — o texto completo de “Expressões em vez de instruções” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Scala for Backend Engineering & Functional Programming, atualize para CoddyKit PRO. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.

O que vou aprender em “Expressões em vez de instruções”?

Tudo retorna um valor. Você pratica Scala for Backend Engineering & Functional Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Scala for Backend Engineering & Functional Programming?

Nenhuma experiência prévia é necessária. Scala for Backend Engineering & Functional Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Expressões em vez de instruções”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Scala for Backend Engineering & Functional Programming?

Sim. Cada aula de Scala for Backend Engineering & Functional Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. val versus var
  2. Tipos básicos e literais
  3. Inferência de tipos
  4. Expressões em vez de instruções
← Voltar para Scala for Backend Engineering & Functional Programming