Язык 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 для ссылок, пустой динамический массив и пустой ассоциативный массив с текущей реализацией)