Scala for Backend Engineering & Functional Programming · Aula

Métodos inline

inline do Scala 3.

Aula 1 de 413 etapas

Métodos inline é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 1 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.

O que é inline?

A palavra-chave inline no Scala 3 informa ao compilador que deve expandir uma definição no local da chamada durante a compilação. Ela é a porta de entrada para a metaprogramação, antes das macros completas.

Um Método inline

Marque um método com inline e o corpo dele será substituído onde quer que seja chamado. Isso pode eliminar o custo da chamada e permitir especialização em tempo de compilação.

inline def square(x: Int): Int = x * x

val r = square(5) // compiles to 5 * 5

Parâmetros inline

Um parâmetro inline força o argumento correspondente a também ser expandido. Se o argumento for uma constante, o compilador poderá incorporá-lo a um literal.

inline def power(x: Int, inline n: Int): Int =
  if (n == 0) 1 else x * power(x, n - 1)

Dobramento de Constantes

Quando os parâmetros inline são literais, ramificações e recursão podem ser totalmente resolvidas em tempo de compilação, deixando apenas a expressão final no bytecode.

inline def power(x: Int, inline n: Int): Int =
  if (n == 0) 1 else x * power(x, n - 1)

val c = power(2, 3) // expands to 2 * 2 * 2 * 1

inline if e inline match

Dentro de um método inline, inline if e inline match são resolvidos em tempo de compilação quando o valor analisado é conhecido estaticamente, eliminando ramificações inativas.

inline def label(inline b: Boolean): String =
  inline if (b) "yes" else "no"

Inline Transparente

transparent inline permite que o tipo de retorno do método seja refinado em cada local de chamada — o compilador pode inferir um tipo mais específico que o declarado.

transparent inline def first(inline b: Boolean): Any =
  inline if (b) 1 else "x" // type can be Int or String

compiletime.error

O pacote scala.compiletime oferece ferramentas como error para interromper a compilação com uma mensagem personalizada — útil para validar argumentos inline.

import scala.compiletime.error

inline def positive(inline n: Int): Int =
  inline if (n <= 0) error("n must be positive") else n

Valores inline

Um inline val é uma constante verdadeira de tempo de compilação. Ele pode ser usado onde literais são exigidos, como em outros cálculos inline.

inline val MaxRetries = 3

inline def retries: Int = MaxRetries

Desempenho versus Tamanho do Código

A expansão inline troca tamanho do código por velocidade e garantias em tempo de compilação. Usá-la em excesso em corpos grandes aumenta o bytecode, portanto reserve-a para métodos pequenos, muito utilizados ou essenciais para especialização.

Executável sem inline

Aqui está a mesma lógica de elevar ao quadrado como um programa comum e independente. A versão inline produziria resultados idênticos, com a multiplicação expandida no local da chamada.

object Main {
  def square(x: Int): Int = x * x
  def main(args: Array[String]): Unit = {
    println(square(5)) // 25
  }
}

Inline é a Base

As macros se baseiam em métodos inline: uma definição inline pode chamar uma macro para gerar código. Dominar inline primeiro torna a camada de macros muito mais fácil.

Verificação Rápida

O que adicionar transparent a um método inline altera?

Recapitulação

Você aprendeu sobre expansão inline no Scala 3:

  • inline def é expandida no local da chamada
  • parâmetros inline e dobramento de constantes
  • inline if / inline match
  • transparent inline, inline val, compiletime.error

A seguir: fundamentos de macros.

Grátis para começar

Aprenda Scala com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
39
Aulas
143

Perguntas Frequentes

A aula “Métodos inline” é grátis?

Sim — o texto completo de “Métodos inline” é 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 “Métodos inline”?

inline do Scala 3. 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 1 de 4.

Quanto tempo leva a aula “Métodos inline”?

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. Métodos inline
  2. Fundamentos de macros
  3. Quotes e splices
  4. Macros práticas
← Voltar para Scala for Backend Engineering & Functional Programming