betacode

Переменные в Dart

  1. Что такое переменная?
  2. Объявляйте переменную с ключевым словом var
  3. Объявить переменную с помощью ключевого слова dynamic
  4. Объявить переменную с определенным типом данных
  5. Объявить переменную с помощью ключевого слова final
  6. Объявить переменную с ключевым словом const

1. Что такое переменная?

В языке программирования Dart переменная (variable) - это имя (идентификатор), указывающее на адрес, по которому данные хранятся в памяти.
Например:
var myVariable1 = 100;
  • var - это ключевое слово для объявления переменной.
  • myVariable1 - это имя переменной.
  • 100 - это значение этой переменной.
Ниже привередны правила для именования переменных:
  • Ключевое слово нельзя использовать для именования переменной. Например, "var" - это ключевое слово, которое нельзя использовать для именования переменных.
  • Имя переменной состоит из букв латинского алфавита и цифр.
  • Имя переменной не может содержать пробелов или специальных символов, за исключением символа подчеркивания (_) или знака доллара ($).
  • Имена переменных не могут начинаться с цифры.

2. Объявляйте переменную с ключевым словом var

Объявление переменной обязательно перед использованием. Для каждого имени вам нужно объявить его только один раз.
Самый простой способ объявить переменную - использовать ключевое слово var:
var myVariable1 = "My Text"; // Declare a variable and assign a value to it.

var myVariable2; // Declare a variable but have not assigned a value.
Вы можете присвоить переменной новое значение, это означает, что переменная указала на новый адрес хранения данных в памяти.
myVariable1 = "New My Text";
Например:
Variable_var_ex1.dart
void main() {
  var myVariable1 = "My Text";
  print(myVariable1);

  myVariable1 = "New My Text";  
  print(myVariable1);
}
Output:
My Text
New My Text
Использование ключевого слова "var" для объявления переменной означает, что вы говорите Dart: "Определите тип данных переменной самостоятельно". Тип данных переменной будет определен при первом присвоении ей значения. Если вы объявляете переменную, но никогда не присваиваете ей значение, ее тип данных равен Null.
Variable_var_ex2.dart
void main() {
  var myVariable1 = "My Text"; // Data type: String
  print("data type of myVariable1: " + myVariable1.runtimeType.toString());

  var myVariable2 = 1000; // Data type: int
  print("data type of myVariable2: " + myVariable2.runtimeType.toString());

  var myVariable3; // Data type: Null
  print("data type of myVariable3: " + myVariable3.runtimeType.toString());

  myVariable3 = true; // Data type: bool
  print("data type of myVariable3: " + myVariable3.runtimeType.toString());
}
Output:
data type of myVariable1: String
data type of myVariable2: int
data type of myVariable3: Null
data type of myVariable3: bool
  • Dart Data Types
Переменная объявляется с ключевым словом var, и тип данных определяется как Null. Вы не можете присвоить ему значение с другим типом данных.
Пример: Переменная была определена Dart, что ее тип данных является String. Компилятор сообщит об ошибке, если вы присвоите ему числовое значение.
void main() {
  var myVariable1 = "My Text"; // Data type: String
  print("data type of myVariable1: " + myVariable1.runtimeType.toString());
 
  // Can not assign to it an integer value.
  myVariable1 = 1000; // Error at compile time.
}
Сообщение об ошибке компилятора:
Error compiling to JavaScript:
Warning: Interpreting this as package URI, 'package:dartpad_sample/main.dart'.
lib/main.dart:6:17:
Error: A value of type 'int' can't be assigned to a variable of type 'String'.
  myVariable1 = 1000; // Error at compile time.
                ^
Error: Compilation failed.

3. Объявить переменную с помощью ключевого слова dynamic

Ключевое слово dynamic также используется для объявления переменной, которая очень похожа на ключевое слово var. Разница в том, что тип данных этой переменной может быть изменен.
dynamic v1 = 123;   // v1 is of type int.
v1 = 456;           // changing value of v1 from 123 to 456.
v1 = 'abc';         // changing type of v1 from int to String.

var v2 = 123;       // v2 is of type int.
v2 = 456;           // changing value of v2 from 123 to 456.
v2 = 'abc';         // ERROR: can't change type of v2 from int to String.

4. Объявить переменную с определенным типом данных

Вы можете объявить переменную с определенным типом данных вместо того, чтобы просить Dart автоматически определять ее тип данных.
String myVariable1 = "My Text";

int myVariable2 = 1000;
Указание определенного типа данных для переменной во время объявления поможет уменьшить количество ошибок в процессе кодирования.
Например: Вы объявляете переменную типа String, но присваиваете ей числовое значение, компилятор (compiler) выдаст вам ошибку.
String myVariable1  = 1000; // Error at compile time.
  • Dart Data Types

5. Объявить переменную с помощью ключевого слова final

Ключевое слово final также используется для объявления переменной, и вы можете присвоить значение этой переменной только один раз. Тип данных этой переменной будет определен Dart в первом задании.
void main() {
  final myVariable1; // Declare a variable.

  myVariable1 = 2; // Assign a value to it.

  myVariable1 = 3; // ERROR at compile time.

  final myVariable2 = "Some Text"; // Declare and assign value to variable.

  myVariable2 = "New Text"; // ERROR at compile time.
}
Использование ключевого слова final помогает предотвратить случайное присвоение нового значения переменной, когда у нее уже есть значение. Это гарантирует, что переменная указывает только на один адрес в памяти в течение своего срока службы.
Переменная объявляется с помощью ключевого слова final. Данные в области памяти, на которую указывает эта переменная, все еще могут изменяться внутренне.
Например: Значение переменной представляет собой массив, элементы массива все еще могут изменяться.
Variable_final_ex2.dart
void main() {
  final myArray = ["A", "B", "C"];
  print(myArray);
 
  myArray[2] = "E";
  print(myArray);
}
Output:
[A, B, C]
[A, B, E]
  • Dart Switch

6. Объявить переменную с ключевым словом const

Ключевое слово const используется для объявления специальной переменной, также известной как константа. При объявлении переменной с ключевым словом const ей следует присвоить значение, в противном случае ее значение будет равно null. После объявления вы не можете присвоить значение этой переменной. Область данных, на которую указывает переменная, станет неизменяемой (immutable), то есть она не сможет изменять данные внутри.
Variable_const_ex1.dart
void main() {
  const myVariable1 = 100; // Declare and assign value to variable.

  myVariable1 = 2; // ERROR: Can not assign new value.

  const myVariable2; // Declare a variable (Its value is considered null).

  myVariable2 = "Some Text"; // ERROR: Can not assign new value.
}
Переменная объявляется с ключевым словом const. Область памяти, на которую он указывает, становится неизменяемой (immutable).
Например: Значение переменной представляет собой массив, этот массив станет неизменяемым (immutable).
Variable_const_ex2.dart
void main() {
  const myArray = ["A", "B", "C"];
  print(myArray);

  myArray[2] = "E"; // ERROR: myArray is immutable.
  print(myArray);
}
Output:
[A, B, C]
: Unsupported operation: indexed setError: Unsupported operation: indexed set
  • Dart Switch