Книга: «1С:Предприятие.Элемент». Возможности встроенного языка
Назад: Перегрузка методов
Дальше: Глава 3. Операции, инструкции, типы

Разрешение неоднозначности при использовании именованных аргументов

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

Например, метод перегружен следующим образом:

// 1-й вариант

метод Метод1(Парам1: Строка, Парам2: Число)

// 2-й вариант

метод Метод1(Парам2: Число, Парам1: Строка)

С позиционными аргументами ошибки не возникнет – при вызове будет однозначно выбран первый вариант определения метода Метод1().

метод МойМетод()

Метод1("тест", 11)

;

А с именованными аргументами возникнет ошибка неоднозначности, так как параметры передаются по именам, а не по порядку вызова. В результате для именованных аргументов подходят оба варианта определения метода Метод1().

метод МойМетод()

//ошибка компиляции – неоднозначный вызов метода с именованными параметрами

Метод1(Парам1 = "тест", Парам2 = 11)

;

При этом, если есть несколько перегрузок, подходящих для именованных аргументов, и среди них существует такая, что общее число ее аргументов меньше, чем у всех остальных, – будет выбрана она. Например, в следующем примере для двух именованных аргументов метода Метод2() будет выбран второй вариант определения метода, так как в нем описаны два параметра, а не три, как в первом варианте:

метод МойМетод()

Метод2(Парам1 = 22, Парам3 = Ложь)

;

// 1-й вариант

метод Метод2(Парам1: Число, Парам2 = "тест", Парам3 = Истина)

// 2-й вариант

метод Метод2(Парам1: Число, Парам3: Булево)

Назад: Перегрузка методов
Дальше: Глава 3. Операции, инструкции, типы