Как на vJass сделать Конкатенацию имени переменной и строки, чтобы создать новое имя переменной?
Например
local string s = "footman"
local int count_unit_ <--- ну и вот тут должен быть footman, то есть count_unit_footman
обычный "+" который объединяет строки, тут не работает, а как конвертировать string в имя переменной я не понял (не знаю тип имени переменной)
Пожалуйста подскажите, в интернете поискал, не нашёл (или вроде что-то нашёл, но не понял)
Моды, например UjAPI, не предлогать, только то, что будет работать у всех, например Memhack
(хотя там тоже я нужный конвертер не нашёл или может быть пропустил)

Как на vJass сделать Конкатенацию имени переменной и строки, чтобы создать новое имя переменной?
Никак. Это лютая дичь.
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
Можно параллельным массивам задать строчные имена как значения, и уже по ним будешь получать прочие нужные данные. Или не вариант?
Ответы (8)
8
Extremator, Массивы вроде бы памяти больше занимают, вот эта конкатенация в моём случае была бы лучшим решением (ну того что мне надо там), я знаю другие способы решить свою проблему, просто этот подходит лучше всего, а я не знаю как его реализовать
26
Tredor46, много это сколько? Обычно все эти сравнения упирают в то что не с чем сравнивать...
8
Extremator, Я не знаю, я думаю (сейчас), что они как и хеш-таблицы разворачиваются на 8192 ячеек там, или и это не так работает? (если често понятия не имею, просто где-то когда-то читал что они что-то там занимают, но это было давно и поэтому информация недостоверная)
30
много это сколько?
Выделение памяти для массивов описано здесь.
30
Я не знаю, я думаю (сейчас)
Если не знаешь, то почему для на чала не поинтересовался как оно всё внутри работает?
30
Tredor46, умные люди говорят что в статье 2005 года. Но это не точно.
Этот комментарий удален
Ответы (2)
8
Она строки в индекс хештаблицы суёт, или это я чего-то не знаю, или она ошиблась, но у меня это так не работает, хештаблица не принимает строку в качестве индекса
7
native StringHash takes string s returns integer
30
Как на vJass сделать Конкатенацию имени переменной и строки, чтобы создать новое имя переменной?
Никак. Это лютая дичь.
Принятый ответ
Ответы (12)
8
Всмысле лютая дичь, на каких-нибудь С++ С#, уверен что это есть, не такая уж и дичь
30
Tredor46, даже там такого нет. А если ты имеешь ввиду define то он не сработает в этом случае.
8
Нет, слишком продвинутые языки, чтобы там такого не было, 100% есть
25
Tredor46, тебе не кажется, что ты что-то делаешь не так, если тебе в варкрафте на ровном месте понадобилась какая-то сомнительная фича из продвинутых языков?
8
Да, есть, я писал программу на C# несколько лет назад, вроде бы там я этим пользовался, но это не точно, ну короче вот так вот
Загруженные файлы
8
Это не сомнительная фича, это базовые знания скорее всего в других языках, ничего необычного в этом нет, просто объединить грубо говоря две строки, одна из которых является именем переменной
25
Tredor46, блин, да никто и нигде так не делает (ну может кроме каких-то очень узких ситуаций, хз), используй массивы для складывания объектов
8
Makeba, ну блин, ну ладно, так что там по lua? Можно или нет его подключить чтоб не мешал обычным челикам заходить?
25
Tredor46, на рефе луа подключено из коробки, остальным соболезную
16
Tredor46, ты наверное про nameof в шарпе и про #define ## в плюсах. Вряд ли автор vJASS закладывал такой функционал
30
Ydav, define не прокатит. Парсер не распознает токен.
25
На луа можно
Осторожно, дичь
    local str = ""
    for i = 1, 9 do
        str = str.."myGlobalVar"..i.." = "..i..";"
    end
    load(str)()
    
    print(myGlobalVar1 + myGlobalVar9) -- выведет 10
Если в этом вашем жассе можно строку исполнить как код, то это может быть решением. Но непонятно какой проблемы
Ответы (2)
8
А lua можно подключить в карту и чтобы другим игрокам потом ничего докачивать не пришлось? Или нельзя?
15
так и не понял что тебе конкретно нужно.
В любом случае, самое близкое в vjass к этому что есть, это макросы
если и это не то, то забей и делай как Extremator написал
Чтобы оставить комментарий, пожалуйста, войдите на сайт.