&Перегрузка — различия между версиями

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

Текущая версия на 00:20, 9 июня 2023

Перегрузка методов

Перфолента.Net - язык со статической типизацией. Поэтому каждый параметр метода имеет строго заданный тип. Но что делать, если метод должен принимать значения нескольких типов?

Существует 3 варианта решения:

  • Создать несколько методов с различными именами, включающими имя принимаемого типа. Например, ЗаписатьЦелое(Ц тип Целое), ЗаписатьЧисло(Ч тип Число), ЗаписатьСтроку(Стр тип Строка). Такой способ применяется в языке 1С, т.к. в нем нет перегрузки методов.
  • Создать один метод принимающий параметр типа Объект. Например, Записать(О тип Объект).
  • Создать несколько методов с одним именем, но с параметрами разного типа. Именно этот способ называется перегрузкой методов.

Модуль МойМодуль

   //перегруженные методы имеют одинаковое имя, но различные наборы параметров
   //атрибут Перегрузка не обязательный
   &Перегрузка
   Процедура Записать(Ц тип Целое)
       //код метода        
   КонецПроцедуры    
   &Перегрузка
   Процедура Записать(Ч тип Число)
       //код метода        
   КонецПроцедуры    
   &Перегрузка
   Процедура Записать(Стр тип Строка, ВВерхнемРегистре тип Булево)
       //код метода        
   КонецПроцедуры    
КонецМодуля    

Хотя атрибут Перегрузка не является обязательным, в некоторых случаях его хорошо бы указать. Например, если перегруженные методы находятся далеко друг от друга или имеют много кода. Атрибут Перегрузка сразу скажет человеку, читающему код, что есть и другие методы с таким же именем, но принимающие другой набор параметров.

Возвращаемое функцией значение не учитывается при перегрузке методов, поэтому в методе не может быть 2-х функций, отличающихся только возвращаемым значением.