Переменные в имени переменных

Поддержка
  • @UserTrue а как мне через js создать переменную БАС? с уникальным идентификатором (учитывая эти скобочки, экранировать их?)

  • @seoshnek, для чего вам нужна переменна с случайным названием?
    Можно создать список стандартным действием и стандартными действиями или через выполнить код менять его содержимое так как вам нужно.

  • @GhostZ Мне нужна такая динамическая переменная, чтобы не было пересечений во многопотоке. Если даже будет не случайная а просто VAR+thread_index - меня и так устроит. Но я не понимаю, как сконкатенировать)

  • @seoshnek, а какие могут быть пересечения если у каждого потока свои переменные?

  • @GhostZ В моем случае эта переменная - имя папки, чтобы сохраняемые и загружаемые оттуда файлы не пересекались и не путались.

  • @seoshnek said in Переменные в имени переменных:

    @GhostZ Мне нужна такая динамическая переменная, чтобы не было пересечений во многопотоке. Если даже будет не случайная а просто VAR+thread_index - меня и так устроит. Но я не понимаю, как сконкатенировать)

    eval("VAR_" + VAR_THREAD_INDEX + "= 'HELLO'" )
    
  • @seoshnek, все равно не понимаю зачем этой переменной случайное название, между потоками работают только глобальные переменные. Вам просто нужно установить значение переменной в зависимости от потока.
    Например:

    [[FOLDER]] = "C:/folder" + [[THREAD_INDEX]] //"C:/folder1"
    
  • @Fox Спасибо. А что должно произойти после выполнения этого кода? Ничего не происходит. Или эту конструкцию нужно присваивать к чему-то?

  • @GhostZ Я что-то затупил, да. Похоже, ваш вариант - то, что надо, спасибо. Изначально хотел создавать случайную папку, писать туда, потом удалять её.

    Вспомнил зачем: у меня изначально к random_string были привязаны и другие данные по имени, поэтому я так искал решение. Впрочем, уже не важно)

  • Ну и если нужно название из переменной то можно использовать js объекты.

    VAR_OBJ = {};
    
    VAR_TEST = "file";
    VAR_OBJ[VAR_TEST] = "test1";
    VAR_TEST = "folder";
    VAR_OBJ[VAR_TEST] = "test2";
    
    VAR_OBJ.file или VAR_OBJ["file"] или VAR_OBJ[VAR_TEST]  (где VAR_TEST равна "file") //"test1"
    VAR_OBJ.folder //"test2"
    

    Или массив если в переменной число.

    VAR_ARR = [];
    
    VAR_THREAD_INDEX = 1;
    VAR_ARR[VAR_THREAD_INDEX] = "test1";
    VAR_THREAD_INDEX = 2;
    VAR_ARR[VAR_THREAD_INDEX] = "test2";
    
    VAR_ARR[1] или VAR_ARR[VAR_THREAD_INDEX] (где VAR_THREAD_INDEX равна 1) //"test1"
    VAR_ARR[2] //"test2"