Niedawno przeczytałem o tym constsłowie kluczowym i jestem tak zdezorientowany! Nie mogę znaleźć żadnej różnicy między consti valsłowa kluczowego, to znaczy możemy korzystać zarówno z nich, aby zmienną niezmienny, jest jeszcze coś, co mi brakuje?
consts są stałymi czasowymi kompilacji. Oznacza to, że ich wartość należy przypisać w czasie kompilacji, w przeciwieństwie do vals, gdzie można to zrobić w czasie wykonywania.
Oznacza to, że constnigdy nie można przypisać funkcji ani konstruktora żadnej klasy, ale tylko funkcji Stringpierwotnej.
Na przykład:
const val foo = complexFunctionCall()//Not okayval fooVal = complexFunctionCall()//Okay
const val bar ="Hello world"//Also okay
To nasuwa kolejne pytanie: dlaczego Kotlin wymaga const valzamiast sprawiedliwego const? Wydaje mi się, że valsłowo kluczowe jest w tym kontekście całkowicie zbędne, ponieważ const varbyłoby absurdalne na pierwszy rzut oka.
@EricLloyd Z const val, constto modyfikator na valzamiast słowa kluczowego. Modyfikatory> słowa kluczowe. Inne przykłady tej samej konstrukcji, są annotation/enum/data class, private val, inline funitp
Właściwości, których wartość jest znana w czasie kompilacji, można oznaczyć jako stałe czasowe kompilacji za pomocą modyfikatora const. Takie właściwości muszą spełniać następujące wymagania:
@JamesJordanTaylor I głosował. Ale zakładam, że dzieje się tak, ponieważ niektórzy nie czytali go uważnie i na pierwszy rzut oka wydaje się, że ta odpowiedź mówi o tym, jak przejść z java na kotlin, co byłoby nie na temat.
const valCar_1="BUGATTI"// final static String Car_1 = "BUGATTI";
val kotlin do Java
valCar_1="BUGATTI"// final String Car_1 = "BUGATTI";
W prostym języku
Wartość zmiennej const jest znana w czasie kompilacji.
Wartość val służy do definiowania stałych w czasie wykonywania.
Przykład 1-
const valCar_1="BUGATTI" ✔
valCar_2= getCar() ✔
const valCar_3= getCar() ❌
//Because the function will not get executed at the compile time so it will through errorfun getCar():String{return"BUGATTI"}
Jest tak, ponieważ getCar () jest analizowany w czasie wykonywania i przypisuje wartość do Car.
Do tego -
val jest tylko do odczytu oznacza niezmienny, który jest znany w czasie wykonywania
var jest zmienny, który jest znany w czasie wykonywania
const są niezmiennymi i zmiennymi znanymi w czasie kompilacji
W Kotlin, consti valoba reprezentują niezmienność i wartości tylko do odczytu i działają jako finalsłowo kluczowe w java.
valsłowo kluczowe musi być użyte do zadeklarowania wartości czasu wykonywania, a constsłowo kluczowe musi być użyte do zadeklarowania wartości czasu kompilacji.
Należy pamiętać, że const musi być używane tylko z prymitywnymi typami danych, a nie dla funkcji i konstruktorów.
Example-
const val fun1 = anyFunctionOrConstructor()// it is not fine
val fun2 = anyFunctionOrConstructor()// it is perfectly fineconst val aa ="My String"// it is perfectly fine
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.