Задача обращения строк файла простая, но оцените эффектность и изящность нашего решения в гибридном стиле (используется часть ООП и немного от функционального стиля).
Работает обращение файла следующим образом: открываем файл для записи, затем открываем исходный файл со строками, разбиваем исходный файл по строкам (с помощью 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!