Какие примитивные типы данных есть в Dart?

Ответ

В Dart, как и во многих языках, есть встроенные базовые типы, хотя технически в Dart всё является объектом. Основные типы, которые часто называют "примитивными" по аналогии с другими языками:

  • int: Целые числа произвольной точности. Например: int age = 25; или int bigNumber = 999999999999999999;.
  • double: Числа с плавающей точкой двойной точности (64-битные). Например: double pi = 3.14159;.
  • num: Родительский тип для int и double. Полезен, когда переменная может содержать и то, и другое.
  • bool: Логический тип, принимающий значения true или false.
  • String: Последовательность символов UTF-16. Поддерживает интерполяцию: String greeting = 'Hello, $name!';.
  • List: Упорядоченная коллекция объектов. List<int> numbers = [1, 2, 3];.
  • Map: Коллекция пар ключ-значение. Map<String, dynamic> user = {'name': 'Alice', 'age': 30};.
  • Set: Неупорядоченная коллекция уникальных объектов. Set<String> tags = {'dart', 'flutter'};.
  • Runes: Представляет Unicode-кодовые точки строки. Используется для работы с эмодзи и специальными символами: String heart = 'u{2764}';.
  • Symbol: Редко используется в обычном коде, но важен для API, работающих с идентификаторами (например, для dart:mirrors или некоторых методов Object).

Важно: В Dart даже int и bool являются объектами и имеют методы (например, 42.toString() или true.toString()).

Ответ 18+ 🔞

А, ну это же про базовые типы в Dart! Давай разберёмся, что тут к чему, а то некоторые думают, что это как в старом добром C — прям примитивы, голые и неприкаянные. Ага, щас! В Dart всё — объекты, ёпта. Даже твоя любимая цифра 42 или true — это не просто битики в памяти, а полноценные объекты, у которых можно методы вызывать. Представляешь? 42.toString() — и пошло-поехало. Это не printf("%d"), тут всё с понтом.

Вот список этих так называемых «примитивов», хотя правильнее сказать — встроенных типов, которые тебе постоянно будут попадаться. Запоминай, а то будешь выглядеть как манда с ушами на собеседовании.

  • int: Это для целых чисел. Не просто int, а целые числа произвольной точности. То есть можешь писать int bigNumber = 999999999999999999; и не бздеть, что не влезет. Хули, удобно же.
  • double: Числа с плавающей точкой. Для всяких pi = 3.14159 или цены на бензин, который дорожает с такой скоростью, что терпения ноль ебать. 64-битные, стандартно.
  • num: А это типа папаша для int и double. Полезная штука, когда твоя переменная сегодня целая, а завтра — с хвостиком. num someNumber = 10; someNumber = 10.5; — и ни хуя себе, всё работает.
  • bool: Ну тут всё просто, как два пальца. true или false. Либо да, либо нет. Либо работает, либо ты опять где-то впендюрил ошибку. Базис, хуле.
  • String: Строки, UTF-16. Можно в апострофах, можно в кавычках. А ещё есть интерполяция — это просто овердохуища удобно. Вместо конкатенации пишешь 'Привет, $name!' и не паришься. Красота.
  • List: Упорядоченный список, массив, коллекция — называй как хочешь. List<int> numbers = [1, 2, 3];. Основа основ. Без списков — никуда.
  • Map: Это когда тебе нужна пара «ключ — значение». Типа телефонной книжки или JSON'а. Map<String, dynamic> user = {'name': 'Вася', 'age': 30};. Ищешь по имени — получаешь возраст. Волнение ебать, когда ключ не находишь, но это уже другая история.
  • Set: Множество. Как список, но все элементы в нём уникальные. Засунул два раза одно и то же — второй раз не добавится. Полезно для хранения тегов, например: Set<String> tags = {'dart', 'flutter', 'кофе'};.
  • Runes: А вот это для эстетов. Нужно, чтобы работать с Unicode-символами, которые одним UTF-16 символом не описываются. Типа эмодзи или сложных иероглифов. String heart = 'u{2764}'; — и вот тебе сердечко. Выглядит сложно, но иногда без этого пидарас шерстяной.
  • Symbol: Ну это вообще хуй с горы для обычного кода. Используется в каких-то глубоких метапрограммных штуках, типа рефлексии. В 99.9% проектов ты на него даже не посмотришь. Но знать, что он есть, надо — а то вдруг спросят, а ты сам от себя охуеешь.

И главное, что я уже говорил, но повторю, потому что это пиздопроебибна важная фишка: в Dart даже int и bool — это объекты. У них есть методы. Можно написать true.toString() и получить строку "true". Можно у числа вызвать isEven, чтобы проверить, чётное ли оно. Это не примитивы в классическом, ущербном понимании. Это объекты, просто они встроенные и оптимизированные дохуя. Так что запомни: в Dart всё — объект. Даже твоя пустая переменная, которая null — и та объект типа Null. Вот такой вот ёперный театр.