&Перегрузка — различия между версиями
Материал из ТХАБ.РФ
Админ (обсуждение | вклад) (Новая страница: «Категория:Атрибут Категория:Описание языка Перфолента.NET») |
Админ (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
+ | === [[Перегрузка методов]] === | ||
+ | |||
+ | Перфолента.Net - язык со статической типизацией. Поэтому каждый параметр метода имеет строго заданный тип. Но что делать, если метод должен принимать значения нескольких типов? | ||
+ | |||
+ | Существует 3 варианта решения: | ||
+ | |||
+ | * Создать несколько методов с различными именами, включающими имя принимаемого типа. Например, ЗаписатьЦелое(Ц тип Целое), ЗаписатьЧисло(Ч тип Число), ЗаписатьСтроку(Стр тип Строка). Такой способ применяется в языке 1С, т.к. в нем нет перегрузки методов. | ||
+ | * Создать один метод принимающий параметр типа [[Объект]]. Например, Записать(О тип Объект). | ||
+ | * Создать несколько методов с одним именем, но с параметрами разного типа. Именно этот способ называется перегрузкой методов. | ||
+ | |||
+ | ==== Модуль МойМодуль ==== | ||
+ | |||
+ | //перегруженные методы имеют одинаковое имя, но различные наборы параметров | ||
+ | //атрибут Перегрузка не обязательный | ||
+ | |||
+ | [[&Перегрузка]] | ||
+ | Процедура Записать(Ц тип Целое) | ||
+ | //код метода | ||
+ | КонецПроцедуры | ||
+ | |||
+ | &Перегрузка | ||
+ | Процедура Записать(Ч тип Число) | ||
+ | //код метода | ||
+ | КонецПроцедуры | ||
+ | |||
+ | &Перегрузка | ||
+ | Процедура Записать(Стр тип Строка, ВВерхнемРегистре тип Булево) | ||
+ | //код метода | ||
+ | КонецПроцедуры | ||
+ | |||
+ | КонецМодуля | ||
+ | |||
+ | Хотя [[атрибут]] [[Перегрузка]] не является обязательным, в некоторых случаях его хорошо бы указать. Например, если перегруженные методы находятся далеко друг от друга или имеют много кода. Атрибут Перегрузка сразу скажет человеку, читающему код, что есть и другие методы с таким же именем, но принимающие другой набор параметров. | ||
+ | |||
+ | Возвращаемое функцией значение не учитывается при перегрузке методов, поэтому в методе не может быть 2-х функций, отличающихся только возвращаемым значением. | ||
+ | |||
[[Категория:Атрибут]] | [[Категория:Атрибут]] | ||
[[Категория:Описание языка Перфолента.NET]] | [[Категория:Описание языка Перфолента.NET]] |
Текущая версия на 00:20, 9 июня 2023
Перегрузка методов
Перфолента.Net - язык со статической типизацией. Поэтому каждый параметр метода имеет строго заданный тип. Но что делать, если метод должен принимать значения нескольких типов?
Существует 3 варианта решения:
- Создать несколько методов с различными именами, включающими имя принимаемого типа. Например, ЗаписатьЦелое(Ц тип Целое), ЗаписатьЧисло(Ч тип Число), ЗаписатьСтроку(Стр тип Строка). Такой способ применяется в языке 1С, т.к. в нем нет перегрузки методов.
- Создать один метод принимающий параметр типа Объект. Например, Записать(О тип Объект).
- Создать несколько методов с одним именем, но с параметрами разного типа. Именно этот способ называется перегрузкой методов.
Модуль МойМодуль
//перегруженные методы имеют одинаковое имя, но различные наборы параметров //атрибут Перегрузка не обязательный
&Перегрузка Процедура Записать(Ц тип Целое) //код метода КонецПроцедуры
&Перегрузка Процедура Записать(Ч тип Число) //код метода КонецПроцедуры
&Перегрузка Процедура Записать(Стр тип Строка, ВВерхнемРегистре тип Булево) //код метода КонецПроцедуры
КонецМодуля
Хотя атрибут Перегрузка не является обязательным, в некоторых случаях его хорошо бы указать. Например, если перегруженные методы находятся далеко друг от друга или имеют много кода. Атрибут Перегрузка сразу скажет человеку, читающему код, что есть и другие методы с таким же именем, но принимающие другой набор параметров.
Возвращаемое функцией значение не учитывается при перегрузке методов, поэтому в методе не может быть 2-х функций, отличающихся только возвращаемым значением.