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:
- Nivel superior o miembro de una declaración de objeto o un objeto complementario .
- Inicializado con un valor de tipo String o un tipo primitivo
- Sin captador personalizado
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