Переменные в имени переменных
-
А как создать не глобальную, а просто локальную динамическую переменную, в плане с динамическим именем, если у нас скажем объявлен
[[RANDOM STRING]] со случайно строкой
и я хочу переменную с именем типа [[FOLDER]]+[[RANDOM_STRING]], даже лучше [[FOLDER]]+[[THREAD_INDEX]]Почему при объявлении переменных нельзя использовать экспрешен? Реально голову можно сломать...
-
@seoshnek said in Переменные в имени переменных:
@GhostZ Мне нужна такая динамическая переменная, чтобы не было пересечений во многопотоке. Если даже будет не случайная а просто VAR+thread_index - меня и так устроит. Но я не понимаю, как сконкатенировать)
eval("VAR_" + VAR_THREAD_INDEX + "= 'HELLO'" ) -
@seoshnek, все равно не понимаю зачем этой переменной случайное название, между потоками работают только глобальные переменные. Вам просто нужно установить значение переменной в зависимости от потока.
Например:[[FOLDER]] = "C:/folder" + [[THREAD_INDEX]] //"C:/folder1" -
@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"