source portable para opencobol open constants kotlin

constants - portable - opencobol para windows



¿Cuál es la diferencia entre "const" y "val"? (3)

Puedes transformar el Kotlin a Java. Entonces puede ver que const tiene un modificador estático más que val . El código simple como este.

Kotlin:

const val str = "hello" class SimplePerson(val name: String, var age: Int)

A Java (porción):

@NotNull public static final String str = "hello"; public final class SimplePerson { @NotNull private final String name; private int age; @NotNull public final String getName() { return this.name; } public final int getAge() { return this.age; } public final void setAge(int var1) { this.age = var1; } public SimplePerson(@NotNull String name, int age) { Intrinsics.checkParameterIsNotNull(name, "name"); super(); this.name = name; this.age = age; } }

Recientemente leí sobre la palabra clave const , ¡y estoy tan confundido! No puedo encontrar ninguna diferencia entre ella y la palabra clave val , quiero decir que podemos usar ambas para hacer una variable inmutable, ¿hay algo más que me falta?


Solo para agregar a la respuesta de Luka:

Constantes de tiempo de compilación

Las propiedades cuyo valor se conoce en tiempo de compilación se pueden marcar como constantes de tiempo de compilación utilizando el modificador const. Dichas propiedades deben cumplir los siguientes requisitos:

Dichas propiedades se pueden usar en anotaciones.

Fuente: kotlinlang.org/docs/reference/…


const son constantes de tiempo de compilación. Esto significa que su valor debe asignarse durante el tiempo de compilación, a diferencia de los val , donde se puede hacer en tiempo de ejecución.

Esto significa que las const nunca pueden asignarse a una función o a ningún constructor de clases, sino solo a una String o primitiva.

Por ejemplo:

const val foo = complexFunctionCall() //Not okay val fooVal = complexFunctionCall() //Okay const val bar = "Hello world" //Also okay