KTB-02 Создать первичную версию словаря¶
Описание¶
Следующая часть видео по теории разработки программ. Уточнение требований и проектирование консольного тренажера:
// видео
Нужно каким-то образом хранить словарь. Делать это будем в текстовом файле проекта. Для начала нужно разобраться, как работать с файлами, чтобы уметь создавать, записывать и читать из него.
// видео
Созданный в уроке файл words.txt теперь будет использоваться в качестве словаря.
Запишем в него несколько слов и переводы для них.
По этой логике мы будем отображать слово из левой части строки, а проверять правильность его перевода из правой.
🗒 Задание¶
- Воспользоваться методом
readLines(), чтобы достать строки из файла. - Распечатать их в цикле (каждая с новой строки соответственно).
- Cоздать ветку с префиксом проекта (KTB-02-branch-name) и сделать в нее коммит.
- Ссылку на PR отправить в форму ниже.
- В случае отклонения – внести исправления в Pull Request и отправить ссылку на него снова.
- После аппрува смержить ветку в main/master и текущий этап будет считаться выполненным.
❌ Ошибки¶
✏️ Комментарии¶
Некорректно создан файл:¶
Если в коде остается код создания нового файла: wordsFile.createNewFile()
Иногда файл words.txt размещают не в корне проекта, а где-то в своей папке:
Этот файл лучше положить в корень проекта и открывать по адресу `words.txt`. В будущем когда приложение будет публиковаться на сервер в виде jar-файла, так будет проще редактировать и пополнять словарь без пересборки проекта
Использование Java-классов¶
Это корректный способ чтения файла. Однако не рекомендуется использовать Java классы, если есть Kotlin альтернатива. Прежде всего - код будет более переносимым, отдельные классы и файлы можно было бы переносить, например, в веб или iOS. Давай воспользуемся `forEachLine {}` - это будет еще и короче.
Комментарии в коде¶
В итоговом проекте не нужно прописывать комментарии с заданием. Теперь все по взрослому, мы делаем продукт!
Решение¶
fun main() {
val wordsFile = File("words.txt")
// wordsFile.createNewFile()
// wordsFile.writeText("tex 111 ")
// wordsFile.writeText("text 222 ")
// wordsFile.appendText("111 text 222 ")
for (string in wordsFile.readLines()) {
println(string)
}
println("- - -") // короткая альтернатива
wordsFile.forEachLine {
println(it)
}
}