Métodos inline
inline do Scala 3.
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 * 5Parâ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 * 1inline 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 Stringcompiletime.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 nValores 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 = MaxRetriesDesempenho 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
inlinee dobramento de constantes inline if/inline matchtransparent inline,inline val,compiletime.error
A seguir: fundamentos de macros.
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
- Métodos inline
- Fundamentos de macros
- Quotes e splices
- Macros práticas