Никогда не поздно узнать что-то новое

TinkerHub - одно из самых активных сообществ для начинающих новаторов и смелых молодых предпринимателей из Кералы. В разгар этого печального кризиса Covid-19 они запустили программу обучения на дому. Это мероприятие посвящено пяти популярным темам обучения - Go, Python, Flutter, Adobe XD и Интернет.

Как энтузиаст Python, я сразу же подал заявку. Благодаря этой статье я отложил Go для дальнейшего исследования. Что касается Adobe XD, я уже увлекался @Figma, а веб-материалы (HTML, CSS, JS) были для меня далекими.

Итак, я заполнил форму Google для Python и получил электронное письмо для прохождения отборочного теста на следующий день. Было 8 часов вечера, и я сразу приступил к делу. Постановка задачи была для меня промежуточным уровнем, но, зная о Python, я решил ее за полчаса - когда я закончил, было около 20:30.

Ранее в тот же день я думал о разработке приложения для своего колледжа, которое требовало серьезного UI / UX-дизайна (вот почему я забыл почтовый ящик). После нескольких поисков @DuckDuckGo я выбрал Flutter вместо React Native (потому что JavaScript для меня греческий!).

Но Дарт тоже был для меня в новинку. Я просто проверил синтаксис, и он показал, что Дарт был ближе. В конце концов, из-за растущей необходимости создавать приложение для колледжа, я тоже подал заявку на участие в программе Flutter. На следующий день я получил почту для проверки. В 10 вечера начался ад!

Дартс во Флаттерверсе…

Dart - относительно новый язык программирования, разработанный Google. Он использует множество замечательных функций на разных языках, и его можно использовать как для клиентской, так и для серверной разработки.

При переходе с Python на Dart были некоторые проблемы - точки с запятой, круглые скобки, объявление, инициализация; вы называете это. Я медленно адаптировался. Пришлось стереть мои ржавые знания о C++ и Java. Dart SDK еще не был установлен в моей системе, поэтому единственным надежным источником для проверки синтаксиса был DartPad.

К счастью, постановка задачи была одинаковой для программ Python и Flutter, поэтому к 22:30 я был готов использовать свое новое оружие!

Во-первых, учебный ресурс, предоставленный @TinkerHub Foundation, был великолепен. Большое спасибо @Mahmud Ahsan за потрясающую компактную презентацию канала YouTube Dart @freeCodeCamp. Поскольку видео было хорошо сегментировано, я быстро смог просмотреть несколько частей и посмотреть, что может предложить Dart.

Это постановка задачи для скрининга:

Напишите уроки дартса для технических специалистов и наставников. Должны быть следующие методы
addStacks(): Добавить определенный набор интересов / опыта
setMentorOrLearner(): Укажите, является ли участник учеником или наставником
setAvailableTime(): если человек является наставником, устанавливает доступное время
getMentor(): принимает стек и время в качестве параметров и находит доступных наставников.
Используйте те же имена методов .

Вот несколько вещей, на которые мне пришлось обратить внимание, прежде чем внедрять решение:

  • Типы данных: Dart поддерживает множество основных типов данных, таких как - int, bool, double, var, String.
  • Преобразование типов: для преобразования переменных из одного типа в другой он предоставляет удобные функции, такие как - int.parse(), double.parse(), toString(), toStringAsFixed().
  • Чтение и ввод с консоли: нет ничего крутого, если только это не позволяет вам удивить своего друга, не являющегося техническим специалистом, напечатав его имя в обратном порядке. Dart предлагает вам метод stdin.readLineSync() для чтения значений с консоли.
  • For loops: Как вы уже догадались - синтаксис очень похож на C/C++ и Python тоже!
  • Карта: Моя любимая. Наконец, что-то сравнимое со словарями Python, и поэтому синтаксис выглядит примерно так var person = {key:value}.
  • Функции: Да - тот же синтаксис, что и в C++!

У меня уже была программа в Python, поэтому мне нужно было только преобразовать ее в синтаксис Dart.

Вот исходный код, который я отправил.

Ой, похоже, есть какие-то ошибки! Сегодня, после некоторой отладки, я нашел удовлетворительное решение:

Что здесь нового?

Как видите, структура кода очень похожа на таковую в Python. Конечно, есть несколько вариантов, и вот объяснение:

  • import - Этот оператор импорта очень похож на оператор в Python. Пакет dart:io содержит классы и методы ввода-вывода stdin.readLineSync(), stdout.write(). Пакет dart:core (необязательно) содержит все основные утилиты языка dart.
  • print() — Зачем использовать print(), когда у нас есть stdin.write()? Потому что print() добавляет дополнительный символ новой строки (\n), который мне не нужен, когда я запрашиваю ввод. Он также поддерживает какую-то строку формата, поэтому вы можете легко встроить переменную в строку. Например, int x=10; print("$x"); выведет 10.
  • putIfAbsent() — Этот метод помещает новые ключи с соответствующими значениями в словарь - или, скорее, карту. Он также проверяет наличие повторяющегося ввода ключа. Классно, правда?
  • =>— Это одна из самых крутых особенностей Dart. Помимо набора ужасных операторов, dart предоставляет для этого => перегрузку. Это называется стрелочной функцией (~ лямбда-функция, как в Python, звонить в какие-нибудь колокола?) Строка 48 person.putIfAbsent(i, () => Participant()); делает что-то простое: каждый key в человеке map создается как объект class Participant().

Как бы то ни было, я наконец закончил кодирование в 23:55, отправил его на GitHub, и когда все было закончено, это было выражение в 23:59:

Спасибо за прочтение!