fixfix
2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 19:14 


12/03/17
709
Здравствуйте. Подскажите пожалуйста, что может значить такая конструкция:
Код:
tdjsonAddon = (0, addon_1.loadAddon)(lib, cfg.useOldTdjsonInterface);

Я не силен в программировании. И до сегодняшнего дня сталкивался только с такими конструкциями, где в скобках передавались какие либо аргументы в функцию, после имени которой эти скобки и стояли... в AutoLISP только такие помню штуки. Но этот код написан на javascript и я потерялся

 Профиль  
                  
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 21:13 


12/03/17
709
С помощью меток выяснил, что когда программа доходит до этой конструкции:
Код:
const lib = path.join(cfg.libdir, cfg.tdjson);
tdjsonAddon = (0, addon_1.loadAddon)(lib, cfg.useOldTdjsonInterface);

- она "ныряет" в другой файл, вот в эту функцию, прописанную в этом другом файле:
Код:
function loadAddon(libraryFile, ignoreAlreadyLoaded = false) {
    [b]const addon = (0, node_gyp_build_1.default)(packageDir);[/b]
    const success = addon.loadTdjson(libraryFile);
    if (!success && !ignoreAlreadyLoaded)
        throw new Error('tdjson is already loaded');
    return {
        tdold: {
            create: addon.tdoCreate,
            send: addon.tdoSend,
            receive: addon.tdoReceive,
            execute: addon.tdoExecute,
            destroy: addon.tdoDestroy
        },
        tdnew: {
            init: addon.tdnInit,
            ref: addon.tdnRef,
            unref: addon.tdnUnref,
            createClientId: addon.tdnCreateClientId,
            send: addon.tdnSend,
            receive: addon.tdnReceive,
            execute: addon.tdnExecute
        },
        setLogMessageCallback: addon.setLogMessageCallback
    };
}

И там опять встречается эта непонятная конструкция (выделена тегами b../b, которые почему то не преобразовались в жирный текст), когда одна пара скобок сразу же следует за другой

 Профиль  
                  
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 22:16 
Заслуженный участник
Аватара пользователя


01/09/13
4790
granit201z в сообщении #1676039 писал(а):
Я не силен в программировании

Скажите, а зачем Вам тогда нужен этот код?

 Профиль  
                  
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 22:36 


12/03/17
709
Geen в сообщении #1676052 писал(а):
Скажите, а зачем Вам тогда нужен этот код?

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

-- 22.02.2025, 22:57 --

Вот эта функция:
Код:
const execute = function execute(request) {
   
   console.log("exec");
   
    if (tdjsonAddon == null) {
        init();
        if (tdjsonAddon == null)
            throw Error('TDLib is uninitialized');
    }
    debug('execute', request);
    request = JSON.stringify((0, util_1.deepRenameKey)('_', '@type', request));
    const response = !cfg.useOldTdjsonInterface ? tdjsonAddon.tdnew.execute(request) : tdjsonAddon.tdold.execute(null, request);
    return (0, util_1.deepRenameKey)('@type', '_', JSON.parse(response));
};

А вот из этой строчки программа в нее должна заходить:
Код:
const response = !cfg.useOldTdjsonInterface ? tdjsonAddon.tdnew.execute(request) : tdjsonAddon.tdold.execute(null, request);

Причем я искусственно менял значение условия и заходил с обоих вариантов. Но метка "exec" в консоль не выводилась. Также искусственным образом я проскочил этот заход. Программа продолжила выполняться и обвалилась где то дальше. Но этот "эксперимент" укрепил уверенность, что именно на этом месте она обваливается, когда идет своим естественным ходом

 Профиль  
                  
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 22:58 
Заслуженный участник
Аватара пользователя


03/06/08
2417
МО

(Оффтоп)


 Профиль  
                  
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 23:12 


12/03/17
709
пианист в сообщении #1676056 писал(а):
по-любому придется иметь дело с telegram api

ну, по сути, это сейчас оно и есть. Весь этот код - это фрагменты из их библиотеки TDLib, выложенной на Гитхабе. И в теории таких проблем быть не должно, ибо сам телеграмм то как то работает на этом коде

-- 22.02.2025, 23:51 --

granit201z в сообщении #1676055 писал(а):
А вот из этой строчки программа в нее должна заходить:

что интересно - в самой функции есть точно такая же строчка (прямо перед return). причем ее почти не обойти никак (если только через ошибку). не вызовет ли это бесконечный заход функции в саму себя?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group