Язык D: Возвращает только что созданный ассоциативный массив

В фабричной функции я иногда хочу ничего не делать, но возвращать только что созданный пустой ассоциативный массив.

Один из способов сделать это заключается в следующем:

auto make_dict()
{ int[char] dict; return dict; }

Есть ли способ избежать объявления локальной переменной dict? Нечто подобное

auto make_dict()
{ return int[char]; }

или же,

auto make_dict()
{ return int[char](); }

или же,

auto make_dict()
{ return new int[char]; }

Ни одна из этих работ, по причинам, связанным с тем, как ассоциативные массивы должны быть объявлены. Есть ли способ?

1 ответ

Решение

Ты можешь использовать

return (int[char]).init;

так что вам не нужно это объявлять.

Свойство init для всех типов обозначает значение инициализации по умолчанию для типа (null для ссылок, пустой динамический массив и пустой ассоциативный массив с текущей реализацией)

Другие вопросы по тегам