Ho letto di recente la parola chiave const
e sono così confuso! Non riesco a trovare alcuna differenza tra questo e la parola chiave val
, voglio dire che possiamo usarli entrambi per creare una variabile immutabile, c'è qualcos'altro che mi manca?Qual è la differenza tra "const" e "val"?
risposta
const
s sono costanti di tempo di compilazione. Significa che il loro valore deve essere assegnato durante la compilazione, a differenza di val
s, dove può essere fatto in fase di runtime.
Ciò significa che const
s non può mai essere assegnato a una funzione oa un costruttore di classe, ma solo a un String
o primitivo.
Ad esempio:
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay
Che dire di qualcosa del genere: 'const val foo =" Hello world "' e 'val bar =" Hello world "'? Sono gli stessi? –
@MathewHany, almeno non in termini di bytecode, consultare: http://stackoverflow.com/questions/37482378/static-data-in-kotlin/37485356#37485356 – hotkey
Penso che i valori di 'const' saranno completamente integrati durante compilazione. –
Giusto per aggiungere alla risposta di Luka:
Compile-Time Costanti
proprietà il cui valore è noto al momento della compilazione può essere contrassegnato come costanti di tempo di compilazione usando il modificatore const. Tali proprietà devono soddisfare i seguenti requisiti:
- di primo livello o membro di un oggetto
- inizializzati con un valore di tipo stringa o di un tipo primitivo
- No getter personalizzato
Fonte: Official documentation
- 1. Qual è la differenza tra const const e const?
- 2. Qual è la differenza tra jQuery .val() e .attr ('valore')?
- 3. Qual è la differenza tra Const e Constant?
- 4. Qual è la differenza tra const e immutable in D?
- 5. Qual è la differenza tra una funzione membro const e una funzione membro non const?
- 6. Qual è la differenza tra "std :: string const & s" e "const std :: string & s"?
- 7. qual è la differenza tra import e const e quale è preferito in commonjs
- 8. Qual è la differenza tra = e: =
- 9. Qual è la differenza tra Verilog! e ~?
- 10. Qual è la differenza tra? : e ||
- 11. qual è la differenza tra [[], []] e [[]] * 2
- 12. Qual è la differenza tra $ e $$?
- 13. Qual è la differenza tra ("") e (null)
- 14. Qual è la differenza tra dict() e {}?
- 15. Qual è la differenza tra " " e ""?
- 16. Qual è la differenza tra {0} e ""?
- 17. Qual è la differenza tra `##` e `hashCode`?
- 18. Qual è la differenza tra {0} e +?
- 19. Qual è la differenza tra .ToString() e + ""
- 20. qual è la differenza tra:.! e: r !?
- 21. Qual è la differenza tra cbegin e begin for vector?
- 22. Objective-C: Qual è la differenza tra forKey e forKeyPath?
- 23. Differenza tra const & const volatili
- 24. Qual è la differenza tra logicalDpiX e physicalDpiX in Qt?
- 25. Qual è la differenza tra if (CONST == variabile) o if (variabile == CONST)?
- 26. Qual è la differenza tra sysfs_create_file() e sysfs_create_group()?
- 27. Qual è la differenza tra mixins statiche e tratto dinamica
- 28. Qual è la differenza tra sv_catpv() e sv_catpvs()?
- 29. C++ Differenza tra posizionamento const
- 30. Qual è la differenza tra onComplete e flatMap of Future?
https://kotlinlang.org/docs/reference/properties.html#compile-time-constants – Michael