Основы Dart 2.x (Встроенные типы данных)
03.10.2019Описание:
- 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;