En el penúltimo modismo por ver está run, que como vemos en la tabla volvemos a recibir el objeto como en apply
pero a diferencia de este último, no devuelve el objeto, sino que devuelve el resultado de una función.
Además si te fijas bien, parece que run
y with
son iguales, pero en realidad no lo son ya que uno es una función de extensión y el otro puede serlo o no, veremos la diferencia cuando expliquemos with
.
Como vimos con let
, run
también devuelve el resultado de una función, por lo que uno de los usos puede ser el siguiente:
import java.lang.Math.PI data class Circle(var radius: Int, var color: String) { fun area() = PI * radius * radius } fun main() { //sampleStart val totalArea = run { val circle = Circle(2, "red") val circle2 = Circle(3, "blue") circle.area() + circle2.area() } println(totalArea) //sampleEnd }
También podrías haberlo hecho así:
import java.lang.Math.PI data class Circle(var radius: Int, var color: String) { fun area() = PI * radius * radius } fun main() { //sampleStart val circle = Circle(2, "red") val totalArea = circle.run { val circle2 = Circle(3, "blue") area() + circle2.area() } println(totalArea) //sampleEnd }
Aunque a mi personalmente me gusta más la primera opción.
Como mencionamos en la primera entrada, let
, muchas veces podremos usar varios modismos para conseguir lo mismo, mi consejo es que los utilicéis basándoos en la semántica y en cual quedaría mejor de cara a alguien que vaya a leer vuestro código.
Enlaces de interés:
En esta lección aprenderás a declarar variables y los tipos básicos.
La mejor forma de aprender algo en esta vida es a base de practicar. Espero…
La principal forma de iniciar una corrutina en Kotlin es con el coroutine builder launch…
Las coroutines en Kotlin vienen a tratar de solucionar todos los problemas y dificultades que…
Con este esquema te puedes guiar a la hora de elegir el modismo o función…
El último que queda por ver es with qué en inglés significa "con". Por lo…