Ostatnio czytałem o słowie kluczowym const
i jestem taki zagubiony! Nie mogę znaleźć żadnej różnicy między nim a słowem kluczowym val
, tzn. Możemy użyć ich obu do stworzenia niezmiennych zmiennych, czy jest coś jeszcze, czego mi brakuje?Jaka jest różnica między "const" i "val"?
Odpowiedz
const
s są sumami czasowymi kompilacji. Oznacza to, że ich wartość musi zostać przypisana podczas kompilacji, w przeciwieństwie do val
s, gdzie można to zrobić w środowisku wykonawczym.
Oznacza to, że const
s nigdy nie może być przypisane do funkcji lub dowolnego konstruktora klasy, ale tylko do obiektu String
lub prymitywu.
Na przykład:
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay
Co powiesz na coś takiego: 'const val foo =" Hello world "' i 'val bar =" Hello world "'? Czy oni są tacy sami? –
@MathewHany, przynajmniej nie pod względem kodu bajtowego, zobacz: http://stackoverflow.com/questions/37482378/static-data-in-kotlin/37485356#37485356 – hotkey
Myślę, że wartości "const" będą po prostu całkowicie inline kompilacja. –
Wystarczy dodać do Luka odpowiedź:
kompilacji Stałe
Właściwości którego wartość jest znany w czasie kompilacji mogą być oznaczone jako czas kompilacji przy użyciu modyfikatora const. Właściwości te muszą spełniać następujące wymagania:
- najwyższego poziomu lub członek obiektu
- inicjowane z wartości typu String lub prymitywnego typu
- Nie zwyczaj pochłaniacza
Źródło: Official documentation
- 1. Jaka jest różnica między definicją var i val w Scali?
- 2. Jaka jest różnica między Const a Constant?
- 3. W Scala, różnica między ostatnim Val Val
- 4. Jaka jest różnica między? : i ||
- 5. Jaka jest różnica między $ i $$?
- 6. Różnica między const i const lotnej
- 7. Jaka jest różnica między sysfs_create_file() i sysfs_create_group()?
- 8. Jaka jest różnica między const a immutable w D?
- 9. jaka jest różnica między const, readonly a statyczną klasą
- 10. Jaka jest różnica między Const a Static w C#?
- 11. Jaka jest różnica między "const int & jj" i "int & const jj"?
- 12. Jaka jest różnica między Subtotal i BaseSubtotal?
- 13. Jaka jest różnica między DetachedCriteria i ICriteria
- 14. Jaka jest różnica między & # x00A0; i ?
- 15. Jaka jest różnica między lex i yacc
- 16. jaka jest różnica między dijit i dojo
- 17. Jaka jest różnica między Control.Select() i Control.Focus()?
- 18. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 19. Jaka jest różnica między apletami i SWING?
- 20. Jaka jest różnica między session.commit() i session.flush()?
- 21. Jaka jest różnica między ImageView.setBackgroundResource i ImageView.setImageResource?
- 22. Jaka jest różnica między Konwertuj i parsuj?
- 23. Jaka jest różnica między JSP i JSTL?
- 24. Jaka jest różnica między Lazarus i CodeTyphon
- 25. Jaka jest różnica między crc32 i crc32b?
- 26. Jaka jest różnica między TypedArray.getInteger() i TypedArray.getInt()?
- 27. jaka jest różnica między ARM7 i ARM7s
- 28. Jaka jest różnica między http_build_str() i http_build_query()?
- 29. Jaka jest różnica między "CompletionStage" i "CompletableFuture"?
- 30. Jaka jest różnica między mock.patch.object (... i mock.patch (
https://kotlinlang.org/docs/reference/properties.html#compile-time-constants – Michael