Перейти к основному содержимому

Ключевое слово «ничто»

Ключевое слово ничто можно использовать в качестве типа возвращаемого значения метода, если этот метод ничего не возвращает. Ничто никак не изменяет код семантически и используется только для удобства чтения кода, так как позволяет сохранить структурное единообразие кода при типизации. Таким образом, использование ничто равносильно отсутствию указания типа возвращаемого значения, и, например, вызовы следующих методов равносильны:

метод ОчиститьМассив(Массив: Массив<Объект>): ничто
Массив.Очистить()
;

метод ОчиститьМассив(Массив: Массив<Объект>)
Массив.Очистить()
;

Ничто никуда нельзя присвоить и с ним никак нельзя взаимодействовать. Ничто может быть использовано только в качестве типа возвращаемого значения метода.

Функциональные типы

В функциональных типах, если тип ничего не возвращает, указание ничто является обязательным. Если функциональный тип что-то возвращает, но результат в данном случае не используется, то можно передать значение этого типа в тип, у которого те же параметры, но который возвращает ничто. Таким образом, любые значения функционального типа (тип-параметра-1, ..., тип-параметра-n) -> тип-результата можно присвоить в тип (тип-параметра-1, ..., тип-параметра-n) -> ничто. Например, значения типов (Строка, Число) -> Число, (Строка, Число) -> Строка, (Строка, Число) -> Булево и т. д. можно присвоить в (Строка, Число) -> ничто:

метод ВыполнитьОбработку(Текст: Строка, Число: Число, Обработчик: (Строка, Число) -> ничто)
Обработчик(Текст, Число)
;

метод Скрипт()
// Функция, возвращающая Строку
пер Объединить = (С: Строка, Ч: Число) -> Консоль.Записать(С + Ч)

// Функция, возвращающая Число
пер ВычислитьДлину = (С: Строка, Ч: Число) -> Консоль.Записать(С.Длина() + Ч.ВСтроку().Длина())

// Функция, возвращающая Булево
пер ПроверитьРавенство = (С: Строка, Ч: Число) -> Консоль.Записать(С.Длина() == Ч)

// Передача разных функций в метод
// Присвоит (Строка, Число) -> Строка в тип (Строка, Число) -> ничто
ВыполнитьОбработку("Строка", 123, Объединить) // Строка123

// Присвоит (Строка, Число) -> Число в тип (Строка, Число) -> ничто
ВыполнитьОбработку("123456", 123456, ВычислитьДлину) // 12

// Присвоит (Строка, Число) -> Булево в тип (Строка, Число) -> ничто
ВыполнитьОбработку("ABC", 3, ПроверитьРавенство) // true
;

См. также