Основы Dart 2.x (Встроенные типы данных)

03.10.2019
This article was written for an older Flutter version and is being updated. Some code may not compile on the current version.

Описание:

  • Dart это объектно-ориентированный статически типизированный язык программирования созданный компанией Google (Dart v1.0 вышел в ноябре 2013 года). Для примеров можно использовать веб-среду DARTPAD

Встроенные типы данных в Dart:

• numbers • strings • booleans • lists (массивы) • sets • maps • runes • symbols

Numbers - числовые типы данных, их всего два int и double .

int x = 52 // целочисленные значения не более 64 бита (в зависимости от платформы)
double num = 123.44 // вещественные числа (числа с плавающей точкой) 64 бит.

Strings - последовательность символов в кодировке UTF-16, можно использовать как двойные так и одинарные кавычки для объявления переменной.

String s1 = 'Одинарные.';
String s2 = "Двойные.";

Booleans - для работы с логическими значениями в языке Dart есть тип с именем bool . Он предоставляет два значения: true и false :

bool no = false;
bool yes = true;

Lists - Список, представляющий собой набор значений либо же просто массив как в других языках программирования.

List list = [0, 1, 2];
// Можно указать тип данных который будет хранить список:
List<int> list = [0, 1, 2];

Списки могут быть фиксированные и нефиксированные Нефиксированный список может динамически менять свой размер, например с помощью метода add() . Например:

list.add(3); //Добавляем в наш список ещё одно значение

Примеры создания нефиксированных списков:

List list1 = [];
List list2 = [0, 1, 2];
List list3 = List<int>();

Примеры создания фиксированного списка:

  • Обычно для создания фиксированного списка, в конструктор List() передается размер списка:
List list1 = List<int>(3); // фиксированный список

Для работы с List существует огромное количество методов, с которыми можно ознакомится в документации: DOC-DART_List .

Sets – это неупорядоченная коллекция уникальных элементов. Для создания Set применяются фигурные скобки {}:

Set set = {0, 1, 2, 3};
//или
Set<int> set1 = {0, 1, 2, 3};

Отличительной особенностью коллекции Set является то, что они могут содержать только уникальные значения ! Свойства и методы класса Set можно посмотреть в документации DOC-DART_Set . Maps - это коллекция которая хранить информацию ключ-значение. И ключ и значение могут быть любого типа, каждый ключ уникален, одинаковых ключей нет, доступ к значению осуществляется через ключ:

var gifts = {
  // Ключ:    Значение
  'first': 'partridge',
  'second': 'turtledoves',
  'fifth': 'golden rings'
};
var nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};

Runes - Данный тип также представляет строки, но в отличие от String, Runes - это последовательность символов в кодировке UTF-32. Поскольку по умолчанию все строки в кавычках (как одинарных, так и двойных) представляют тип String, то для определения переменной Runes требуется специальный синтаксис:

Runes input = new Runes(
      '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');
  print(new String.fromCharCodes(input));
}

Symbols - Символы являются типом Symbol. Для определения объекта этого типа применяется симол решетки # :

Symbol sym = #X;  // представляет символ X

Переменные и константы

var и dynamicvar - способ объявить переменную без указания её типа, при компиляции компилятор сам определит необходимый тип данных. Например:

var x = 88; //Тип переменной int
var str = 'hello'; //Тип переменной string
var list = [1, 2, 3]; // Тип переменной List
// и прочее ...

dynamic - Данный оператор, как и var , позволяет вывести тип переменной исходя из присвоенного ей значения. Но в отличие от var, dynamic позволяет изменять тип переменной.

void main() {
    var x = 4;
    print(x); // x = 4
    x =  'Four';     // Ошибка! x представляет целые числа, а не строки
    print(x);
}

Чтобы можно было динамически менять тип данных, применяется оператор dynamic :

void main() {
    dynamic x = 4;
    print(x); // x = 4
    x =  'Four';     // Тип динамически поменяеться на String
    print(x); // 'Four'
}

Константы

  • Ключевые слова final и const используются для объявления констант. Dart предотвращает изменение значений переменной, объявленной с использованием ключевых слов final или const. Эти ключевые слова могут использоваться вместе с типом данных переменной или вместо ключевого слова var .
const x = 1;
const int y = 2;
final int z = 3;
final q = 4;