Прежде всего, не поймите меня неправильно, вы можете подумать, что я предвзят, но я хочу сказать, что люблю и Java, и Rust. И в нашем современном мире будет много языков программирования.
Сегодня я хотел бы поделиться своим личным взглядом на поток управления Rust с точки зрения Java-разработчика.
Давайте кратко поговорим о похожих вещах
Все вещи, которые мы используем в Java, такие как while/for и if…else подобны в Rust. Но многие вещи в Rust не существуют в Java.
Теперь поговорим о разных вещах
Отправной точкой, о которой мы должны подумать, является философская идея дизайна Java vs Rust:
В Java программа «ориентирована на операторы», но в Rust все ориентировано на «выражения». Я знаю, что эти термины заставят вас запутаться. Ниже приведены определения того, что я имею в виду:
«Утверждение» — это код, который мы прописываем и изменяем свойства программы, например:
«Выражение», состоящее примерно из трех символов.
- Должен оцениваться как значение
- Может выполнять инструкции (или побочный эффект)
- Может выполнять другие выражения
Теперь рассмотрим примеры расхождения
В Java мы всегда думаем об операторах, используя операторы для изменения состояния приложений. Но в Rust гуру больше думают о «выражении». Более того, они рассматривают Rust как язык «выражений».
Давайте взглянем на простую программу на Rust.
Это смертельно простая программа на Rust, но она многое говорит о Rust. Однако это не то же самое, что Java.
- «а = 100;» является выражением. И () является типом данных b, потому что это выражение ничего не возвращает
- () — это тип данных в Rust, это тип единиц измерения, я не знаю, что это такое, но в Java это похоже на «void». Это ничего не значит". Да… ничего
- Компилятор пометит вас во время компиляции и сообщит, что вам не разрешено печатать () переменную void
1. Если {…} иначе {…}
В Java if{…} else {…} не может возвращать значение, но в Rust if{…} else {…} — это выражение. И он всегда возвращает либо (), либо реальное значение.
2. Зацикливание: не используйте while… или делайте…while
В Java у нас нет «цикла», но в Rust тоже можно увидеть:
- Rust представляет новый способ зацикливания с помощью ключевого слова: loop {…}. Так что не удивляйтесь, если вы не увидите большую часть while {...} в коде на Rust.
- loop {…} также является выражением и возвращает значение в операторе «break».
3. Интересно прийти на «матч». Вы видите «совпадение» повсюду в коде Rust. Гуру очень любят «матч»
В Java мы обычно делаем это, когда дело доходит до переключения… регистра. В Rust даже с любыми девчонками можно "матчаться" :) :)
Но в Rust у нас больше нет switch…case. Мы используем новый термин «матч»…
«Сопоставление» очень мощное средство в мире Rust, вы можете «сопоставить» с целым числом, строкой, структурой, перечислением, кортежем и т. д. Что бы у вас ни было, «матч» может помочь вам в большинстве случаев.
Заключительные заметки
Речь идет о точке с запятой;
Помните, что выражение всегда возвращает значение. если вы удалите точку с запятой в последнем операторе, то этот оператор является оператором возврата, иначе по умолчанию будет возвращено значение void()
Не только функция и замыкание возвращают значение в Rust, но и каждое выражение также возвращает значение в конце.
Спасибо за прочтение!