Giter VIP home page Giter VIP logo

delegate's Introduction

Делегаты

Обсудить 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, "Два", "Десять");

Делегат = Делегаты.Создать(ЭтотОбъект, "МетодСТремяПараметрами", Массив);

Делегат.Исполнить();

delegate's People

Contributors

artbear avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

delegate's Issues

Неверно обрабатывается массив параметров

Автор @khorevaa

происходит лишная обертка в массив уже установленных параметров...

Вот тут проблема строка 31 Делегат.os :

Функция Исполнить(НовыеПараметры = Неопределено) Экспорт

    ПараметрыВыполнения = Новый Массив;
    Если НовыеПараметры <> Неопределено Тогда
        ПараметрыВыполнения.Добавить(НовыеПараметры);        
    ИначеЕсли Параметры <> Неопределено Тогда
        ПараметрыВыполнения.Добавить(Параметры);
    КонецЕсли;

Если новые параметры передаешь массив, т.к. в процедуре несколько параметров на вход

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.