Никогда не поздно узнать что-то новое
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, звонить в какие-нибудь колокола?) Строка 48person.putIfAbsent(i, () => Participant());
делает что-то простое: каждыйkey
в человекеmap
создается как объектclass
Participant()
.
Как бы то ни было, я наконец закончил кодирование в 23:55, отправил его на GitHub, и когда все было закончено, это было выражение в 23:59:
Спасибо за прочтение!