В D, в чем разница между частным импортом и обычным импортом?

В чем разница между

private import tango.io.File;

и

import tango.io.File;

на языке программирования D?

7
задан lowerkey 19 August 2010 в 04:59
поделиться

2 ответа

Было время, когда импорты были публичными по умолчанию; то есть, когда вы импортировали другой модуль, его содержимое было видно не только из вашего модуля, но и из любого модуля, который импортировал ваш модуль.

В конце концов, это было изменено так, что они стали приватными по умолчанию.

Однако есть несколько причин вручную указывать private:

  1. Импорт можно сделать public, если он находится в public контексте. Например:

    public:
    
    // много всего
    
    import blah; // о нет, все могут видеть мои импорты!
    
  2. DMD изобилует ошибками, связанными с импортом. Например, выборочные импорты по умолчанию являются публичными, несмотря на то, что якобы являются приватными. Это может вызвать всевозможные ужасные кошмарные сценарии, когда символы (ошибочно), импортированные публично в одном модуле, приводят к тому, что символы в совершенно другом модуле просто исчезают и ломают вашу программу.

Другими словами, они, вероятно, приватны в Tango, потому что разработчики слишком долго работали с DMD, чтобы доверять ему в том, что он сделает это правильно.

7
ответ дан 6 December 2019 в 22:59
поделиться

В D 2.0 частный импорт является синонимом импорта , в отличие от общедоступного импорта . По умолчанию импорт частный. См. Документацию по модулям

РЕДАКТИРОВАТЬ: По умолчанию импорт также является частным D 1.0 .

4
ответ дан 6 December 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: