Actualmente estoy trabajando en un antiguo proyecto de Android escrito en Java, pero estoy escribiendo nuevas partes en Kotlin con las que no estoy muy familiarizado. Necesito alguna forma de desenvolver el objeto anulable (análogo de if let unwrappedMyVar = myVar else {} en Swift), para hacer esto, uso myVar?.let {} scope que desenvuelve myWar y ejecuta el bloque en caso de que no sea nulo. Pero ahora tengo curiosidad por saber cómo se implementan esas funciones de alcance en Kotlin, ¿se compilan realmente en clases anónimas de Java? Si es así, puede dar lugar a los mismos problemas que tienen las clases anónimas de Java. Y es bastante fácil crear la fuga.
Gracias !
Saludos cordiales,
andré
Las funciones de alcance como let , apply , run o also , así como muchas más funciones en la biblioteca estándar de Kotlin, son funciones inline , lo que significa que las lambdas que les pasa se alinean en sus cuerpos, y los cuerpos transformados luego ponerse en línea en el sitio de la llamada.
Con las funciones de alcance, el código de bytes resultante es en su mayoría equivalente a lo que obtendría simplemente declarando una variable y usándola después de una verificación explícita de if -null.