Разрушитель или Разрушитель?
В своей повседневной жизни и при чтении книг я видел термин "деструктор" и "деструктор".
Но как правильно назвать этот метод?
7 ответов
Это деструктор, используемый для очистки вещей, когда объект вот-вот умрет. Вызывается автоматически, если указано, когда объект будет удален / умер.
Больше информации:
http://en.wikipedia.org/wiki/Destructor_%28computer_science%29
Разрушитель, если вы ссылаетесь на ООП. Разрушитель при разговоре о World of Warcraft;-).
Как уже объяснили другие, destructor
используется для очистки объекта.
В C# 7 появилась новая функция, которую можно назвать deconstructor
:
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public void Deconstruct(out string firstName, out string lastName)
{
firstName = FirstName;
lastName = LastName;
}
}
var person = new Person { FirstName = "John", LastName = "Smith" };
var (localFirstName, localLastName) = person;
Более распространенные названия для этой функции deconstruct method
или просто deconstruction
но я нашел по крайней мере один экземпляр в официальном блоге msdn, ссылаясь на него как deconstructor
(выделение мое):
Будет обычным делом, чтобы конструкторы и деконструкторы были "симметричными" таким образом.
Деструктор - наиболее распространенный термин (деконструктор звучит как местное использование: мне он нравится в некотором смысле, поскольку он указывает на симметрию с конструкторами).
Но эти вещи в некоторой степени зависят от языка, поскольку разные ОО-языки имеют разные модели жизненного цикла экземпляров. Возьмем, например, C#, где вместо деструкторов у вас есть финализаторы, которые имеют слабые гарантии выполнения, дополненные поддерживаемым языком Dispose()
шаблон, который обеспечивает определенность.
"Деструктор" - действительно правильный термин. Я видел "деконструктор" в старых книгах, и кажется, что некоторое время велись споры о правильном термине, но деструктор, похоже, победил.
Что касается легкомысленных ответов о том, что вики или WoW говорят о деконструкции: попробуйте поискать "деструктор" в стандартном словаре. По-видимому, это устройство для уничтожения бортовой ракеты или ракеты-носителя.
Destruct = Уничтожить
Deconstruct = разложить (составить в обратном порядке на части)
Поместите -tor, тогда это исполнитель глагола. Так что это зависит от контекста, которого вы пытаетесь достичь.
Я до сих пор помню лекцию, на которой были представлены концепции Haskell, когда я впервые услышал слово «деконструктор». Сначала я был сбит с толку, потому что думал о деструкторах, но, как быстро выяснилось, это разные понятия. В Haskell нет деструкторов, но есть деконструкторы. Они используются для извлечения отдельных полей-членов данных, содержащихся в структурированном значении. В основном это методы доступа к членам, но как функции.
Я действительно задавался вопросом об этом слове, потому что практически никогда не встречал его где-либо еще. Вот нашел ответ:
Декомпозитор или деструктурирование может быть хорошим эквивалентным термином, и я действительно часто слышал о «деструктурировании».