Задача обращения строк файла простая, но оцените эффектность и изящность нашего решения в гибридном стиле (используется часть ООП и немного от функционального стиля).
Работает обращение файла следующим образом: открываем файл для записи, затем открываем исходный файл со строками, разбиваем исходный файл по строкам (с помощью splitLines), обращаем полученный диапазон (алгоритм retro из std.range) и, наконец, с помощью анонимной функции и each записываем каждую строку в открытый для записи файл:
import std.algorithm; import std.file; import std.range; import std.stdio; import std.string; void main() { File file; file.open("result.txt", "w"); (cast(string) std.file.read("test.txt")) .splitLines .retro .each!(a => file.writeln(a)); file.close; }
И все это мы сделали, используя лишь стандартную библиотеку D!