2014 dxdy logo

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

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




 
 Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 19:14 
Здравствуйте. Подскажите пожалуйста, что может значить такая конструкция:
Код:
tdjsonAddon = (0, addon_1.loadAddon)(lib, cfg.useOldTdjsonInterface);

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

 
 
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 21:13 
С помощью меток выяснил, что когда программа доходит до этой конструкции:
Код:
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 
Аватара пользователя
granit201z в сообщении #1676039 писал(а):
Я не силен в программировании

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

 
 
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 22:36 
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 
Аватара пользователя

(Оффтоп)

granit201z
Сочувствую. Какое-то время назад делал что-то похожее. Правда, в питоне, но это как раз неважно, по-любому придется иметь дело с telegram api. Советую заранее запастись симками, телега Вам их будет блокировать практически при любых попытках обращения к ее контенту через api.

 
 
 
 Re: Конструкция из следующих друг за другом скобок в java script
Сообщение22.02.2025, 23:12 
пианист в сообщении #1676056 писал(а):
по-любому придется иметь дело с telegram api

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

-- 22.02.2025, 23:51 --

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

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

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group