Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Использование делегатов/функторов в скриптах OneScript

License

Notifications You must be signed in to change notification settings

artbear/delegate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

16 Commits

Repository files navigation

Делегаты

Обсудить Join the chat at https://gitter.im/EvilBeaver/oscript-library GitHub release Build Status

Библиотека предназначена для создания и выполнения делегатов/функторов.

Делегат представляет собой объект, который может ссылаться на метод другого объекта.

Например, можно выполнять функции-коллбэки или унифицированно выполнять методы у схожих объектов.

Также можно использовать для замены "некрасивых" и многословных объектов 1С - ОписаниеОповещения, которые имеют мало смысла в мире OneScript.

Использование

Обработчик-процедура

// Подключение библиотеки
#Использовать Делегат
// Метод, вызываемый из делегата
Процедура Поздороваться(Имя) Экспорт
 Сообщить("Привет, " + Имя + "!");
КонецПроцедуры
Делегат = Делегаты.Создать(ЭтотОбъект, "Поздороваться", "Мир");
Делегаты.Исполнить(Делегат); // или Делегат.Исполнить();
ДелегатНовыйМир = Делегаты.Создать(ЭтотОбъект, "Поздороваться");
ДелегатНовыйМир.Исполнить("Новый мир"); // или Делегаты.Исполнить(ДелегатНовыйМир, "Новый мир");

Обработчик-функция

// Подключение библиотеки
#Использовать Делегат
// Метод, вызываемый из делегата
Функция Поздороваться(Имя) Экспорт
 Сообщить("Привет, " + Имя + "!");
 Возврат Имя;
КонецФункции
Делегат = Делегаты.Создать(ЭтотОбъект, "Поздороваться", "Мир");
ИмяМир = Делегаты.Исполнить(Делегат); // или Делегат.Исполнить();
ДелегатНовыйМир = Делегаты.Создать(ЭтотОбъект, "Поздороваться");
ИмяНовыйМир = ДелегатНовыйМир.Исполнить("Новый мир"); // или Делегаты.Исполнить(ДелегатНовыйМир, "Новый мир");

Передача нескольких параметров

#Использовать Делегат
Процедура МетодСТремяПараметрами(Парам1, Парам2, Парам3) Экспорт
	Журнал = СтрШаблон("%1%2, %3, %4!", Журнал, Парам1, Парам2, Парам3);
КонецПроцедуры
Делегат = Делегаты.Создать(ЭтотОбъект, "МетодСТремяПараметрами");
Массив = Делегаты.МассивПараметров(1, "Два", "Десять");
Делегат.Исполнить(Массив);

или можно указать параметры при создании Делегата

#Использовать Делегат
Процедура МетодСТремяПараметрами(Парам1, Парам2, Парам3) Экспорт
	Сообщить(СтрШаблон("%1, %2, %3!", Парам1, Парам2, Парам3));
КонецПроцедуры
Массив = Делегаты.МассивПараметров(1, "Два", "Десять");
Делегат = Делегаты.Создать(ЭтотОбъект, "МетодСТремяПараметрами", Массив);
Делегат.Исполнить();

About

Использование делегатов/функторов в скриптах OneScript

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /