fix
This commit is contained in:
parent
67c944400c
commit
7214d3045f
|
@ -1,26 +1,26 @@
|
||||||
# 12. Перегрузка операторов
|
# 12. Перегрузка операторов
|
||||||
|
|
||||||
[12.1. Перегрузка операторов в D](#12-1-перегрузка-операторов-в-d)
|
- [12.1. Перегрузка операторов в D](#12-1-перегрузка-операторов-в-d)
|
||||||
[12.2. Перегрузка унарных операторов](#12-2-перегрузка-унарных-операторов)
|
- [12.2. Перегрузка унарных операторов](#12-2-перегрузка-унарных-операторов)
|
||||||
[12.2.1. Объединение определений операторов с помощью выражения mixin](#12-2-1-объединение-определений-операторов-с-помощью-выражения-mixin)
|
- [12.2.1. Объединение определений операторов с помощью выражения mixin](#12-2-1-объединение-определений-операторов-с-помощью-выражения-mixin)
|
||||||
[12.2.2. Постфиксный вариант операторов увеличения и уменьшения на единицу](#12-2-2-постфиксный-вариант-операторов-увеличения-и-уменьшения-на-единицу)
|
- [12.2.2. Постфиксный вариант операторов увеличения и уменьшения на единицу](#12-2-2-постфиксный-вариант-операторов-увеличения-и-уменьшения-на-единицу)
|
||||||
[12.2.3. Перегрузка оператора cast](#12-2-3-перегрузка-оператора-cast)
|
- [12.2.3. Перегрузка оператора cast](#12-2-3-перегрузка-оператора-cast)
|
||||||
[12.2.4. Перегрузка тернарной условной операции и ветвления](#12-2-4-перегрузка-тернарной-условной-операции-и-ветвления)
|
- [12.2.4. Перегрузка тернарной условной операции и ветвления](#12-2-4-перегрузка-тернарной-условной-операции-и-ветвления)
|
||||||
[12.3. Перегрузка бинарных операторов](#12-3-перегрузка-бинарных-операторов)
|
- [12.3. Перегрузка бинарных операторов](#12-3-перегрузка-бинарных-операторов)
|
||||||
[12.3.1. Перегрузка операторов в квадрате](#12-3-1-перегрузка-операторов-в-квадрате)
|
- [12.3.1. Перегрузка операторов в квадрате](#12-3-1-перегрузка-операторов-в-квадрате)
|
||||||
[12.3.2. Коммутативность](#12-3-2-коммутативность)
|
- [12.3.2. Коммутативность](#12-3-2-коммутативность)
|
||||||
[12.4. Перегрузка операторов сравнения](#12-4-перегрузка-операторов-сравнения)
|
- [12.4. Перегрузка операторов сравнения](#12-4-перегрузка-операторов-сравнения)
|
||||||
[12.5. Перегрузка операторов присваивания](#12-5-перегрузка-операторов-присваивания)
|
- [12.5. Перегрузка операторов присваивания](#12-5-перегрузка-операторов-присваивания)
|
||||||
[12.6. Перегрузка операторов индексации](#12-6-перегрузка-операторов-индексации)
|
- [12.6. Перегрузка операторов индексации](#12-6-перегрузка-операторов-индексации)
|
||||||
[12.7. Перегрузка операторов среза](#12-7-перегрузка-операторов-среза)
|
- [12.7. Перегрузка операторов среза](#12-7-перегрузка-операторов-среза)
|
||||||
[12.8. Оператор $](#12-8-оператор)
|
- [12.8. Оператор $](#12-8-оператор)
|
||||||
[12.9. Перегрузка foreach](#12-9-перегрузка-foreach)
|
- [12.9. Перегрузка foreach](#12-9-перегрузка-foreach)
|
||||||
[12.9.1. foreach с примитивами перебора](#12-9-1-foreach-с-примитивами-перебора)
|
- [12.9.1. foreach с примитивами перебора](#12-9-1-foreach-с-примитивами-перебора)
|
||||||
[12.9.2. foreach с внутренним перебором](#12-9-2-foreach-с-внутренним-перебором)
|
- [12.9.2. foreach с внутренним перебором](#12-9-2-foreach-с-внутренним-перебором)
|
||||||
[12.10. Определение перегруженных операторов в классах](#12-10-определение-перегруженных-операторов-в-классах)
|
- [12.10. Определение перегруженных операторов в классах](#12-10-определение-перегруженных-операторов-в-классах)
|
||||||
[12.11. Кое-что из другой оперы: opDispatch](#12-11-кое-что-из-другой-оперы-opdispatch)
|
- [12.11. Кое-что из другой оперы: opDispatch](#12-11-кое-что-из-другой-оперы-opdispatch)
|
||||||
[12.11.1. Динамическое диспетчирование с opDispatch](#12-11-1-динамическое-диспетчирование-с-opdispatch)
|
- [12.11.1. Динамическое диспетчирование с opDispatch](#12-11-1-динамическое-диспетчирование-с-opdispatch)
|
||||||
[12.12. Итоги и справочник](#12-12-итоги-и-справочник)
|
- [12.12. Итоги и справочник](#12-12-итоги-и-справочник)
|
||||||
|
|
||||||
Мы, программисты, не очень любим слишком уж отделять встроенные типы от пользовательских. Магические свойства встроенных типов мешают открытости и расширяемости любого языка, поскольку при этом пользовательские типы обречены оставаться второсортными. Тем не менее у проектировщиков языка есть все законные основания относиться к встроенным типам с большим почтением. Одно из таких оснований: более настраиваемый язык сложнее выучить, а также сложнее выполнять его синтаксический анализ как человеку, так и машине. Каждый язык по-своему определяет приемлемое соотношение между встроенным и настраиваемым, что для некоторых языков означает впадение в одну из этих двух крайностей.
|
Мы, программисты, не очень любим слишком уж отделять встроенные типы от пользовательских. Магические свойства встроенных типов мешают открытости и расширяемости любого языка, поскольку при этом пользовательские типы обречены оставаться второсортными. Тем не менее у проектировщиков языка есть все законные основания относиться к встроенным типам с большим почтением. Одно из таких оснований: более настраиваемый язык сложнее выучить, а также сложнее выполнять его синтаксический анализ как человеку, так и машине. Каждый язык по-своему определяет приемлемое соотношение между встроенным и настраиваемым, что для некоторых языков означает впадение в одну из этих двух крайностей.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue