Métodos inline
inline de Scala 3
Métodos inline es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
¿Qué es inline?
La palabra clave inline de Scala 3 indica al compilador que expanda una definición en el lugar de la llamada durante la compilación. Es el punto de entrada a la metaprogramación, antes de las macros completas.
Un método inline
Marque un método con inline y su cuerpo se sustituirá allí donde se invoque. Esto puede eliminar el coste de la llamada y habilitar la especialización en tiempo de compilación.
inline def square(x: Int): Int = x * x
val r = square(5) // compiles to 5 * 5Parámetros inline
Un parámetro inline obliga a insertar también su argumento. Si el argumento es una constante, el compilador puede convertirlo en un literal.
inline def power(x: Int, inline n: Int): Int =
if (n == 0) 1 else x * power(x, n - 1)Plegado de constantes
Cuando los parámetros inline son literales, las ramas y la recursión pueden resolverse por completo en tiempo de compilación, dejando solo la expresión final en el 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 un método inline, inline if e inline match se resuelven en tiempo de compilación cuando el valor analizado se conoce estáticamente, lo que elimina las ramas muertas.
inline def label(inline b: Boolean): String =
inline if (b) "yes" else "no"Inline transparente
transparent inline permite refinar el tipo de retorno del método en cada lugar de llamada; el compilador puede inferir un tipo más específico que el declarado.
transparent inline def first(inline b: Boolean): Any =
inline if (b) 1 else "x" // type can be Int or Stringcompiletime.error
El paquete scala.compiletime ofrece herramientas como error para interrumpir la compilación con un mensaje personalizado, lo que resulta ú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
Un inline val es una verdadera constante de tiempo de compilación. Puede usarse donde se requieren literales, como en otros cálculos inline.
inline val MaxRetries = 3
inline def retries: Int = MaxRetriesRendimiento frente a tamaño del código
La inserción de código intercambia tamaño del código por velocidad y garantías en tiempo de compilación. Usarla demasiado en cuerpos grandes aumenta el tamaño del bytecode, así que resérvela para métodos pequeños, muy utilizados o fundamentales para la especialización.
Ejecutable sin inline
A continuación se muestra la misma lógica de elevar al cuadrado como un programa autocontenido ordinario. La versión inline produciría resultados idénticos, con la multiplicación expandida en el lugar de la llamada.
object Main {
def square(x: Int): Int = x * x
def main(args: Array[String]): Unit = {
println(square(5)) // 25
}
}Inline es la base
Las macros se basan en los métodos inline: un inline def puede llamar a una macro para generar código. Dominar primero inline facilita mucho el aprendizaje de la capa de macros.
Comprobación rápida
¿Qué cambia al añadir transparent a un método inline?
Resumen
Ha aprendido la inserción de código en Scala 3:
inline defse expande en el lugar de la llamada- parámetros
inliney plegado de constantes inline if/inline matchtransparent inline,inline val,compiletime.error
Siguiente: fundamentos de las macros.
Aprende Scala con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 39
- Lecciones
- 143
Preguntas frecuentes
¿La lección «Métodos inline» es gratis?
Sí — el texto completo de «Métodos inline» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
¿Qué aprenderé en «Métodos inline»?
inline de Scala 3 Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?
No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Métodos inline»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?
Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.