#stream #d
#поток #d
Вопрос:
D кажется языком с очень высоким потенциалом, и мне очень интересно, что ждет его в будущем. Однако мне любопытно, есть ли какие-либо обсуждения по поводу включения потоков в D? Потоки C очень помогли мне в прошлом, и они кажутся намного чище, чем использование таких функций, как printf
/ writefln
или любых других.
Комментарии:
1. Какой именно функциональности, по вашему мнению, не хватает?
2. То, как вы читаете (записываете) консоль, файлы и т.д., не имеет большого значения. Однако в C я счел полезным передавать потоки в качестве параметров функции (либо
std::ostreamamp;
orstd::istreamamp;
), не говоря уже о перегрузке операторов<<
и>>
в моих пользовательских классах, что иногда может быть очень полезно, особенно при написании классов, которые абстрагируют математические понятия, такие как дроби или комплексные числа. В принципе, потоки намного более универсальны и допускают более общее программирование.3. Я согласен. Использование потоков гораздо более WYSIWYG, чем старый стиль printf. В этом действительно разница между int i = Add (4,3) и int i = 4 3. Та же функциональность, но вряд ли та же самая.
Ответ №1:
В настоящее время ведутся разговоры об отказе от текущего дизайна std.stream и его переписывании. Андрей Александреску некоторое время назад опубликовал интерфейсы для предлагаемого нового дизайна, основанного на диапазонах D2. К сожалению, сообществу не хватает рабочей силы, и оно пытается наладить работу с целой кучей другой библиотечной поддержки, такой как сетевое взаимодействие, параллелизм, API баз данных, контейнеры и т.д. Потоки стоят на повестке дня, но не на первом плане.
Ответ №2:
Ну, текущий интерфейс потоковой передачи находится в http://www.digitalmars.com/d/2.0/phobos/std_stream.html
Но я думаю, что когда-нибудь это будет переработано.
Ответ №3:
У D есть стандартный способ передачи таких вещей, как файл, открытое сетевое подключение и стандартный вывод. (Смотрите другие ответы) У него также есть стандартный способ преобразования структуры / объекта в строку (toString, если оно не было изменено). Лично я считаю, что это дает вам все части потоков C , которые мне нравятся. Я был бы против добавления оператора, перегружающего вещи, поскольку это делает такие вещи, как разделение данных и форматирование, практически невозможными.