Могу ли я выбрать значение из таблицы на основе ввода функции? - PullRequest
2 голосов
/ 12 июня 2019

Я хотел бы знать, возможно ли выбрать значение из таблицы на основе аргумента функции.

Я пытался установить значение статически, и это возвращает значение. Я просто хотел бы сделать это с помощью аргументов функции.


function CheckWeapon(ped, attachment)
    for k,v in pairs(weapons)do
        if GetHashKey(k) == GetSelectedPedWeapon(ped) then
            print(v.attachment)
            return v.attachment -- This needs to be based on the 
                                -- argument "attachment"
        end
    end
    return false
end

Я ожидаю, что если бы я передал аргумент «глушитель» этой функции, я получил бы соответствующее значение глушителя в таблице. Вместо этого это ноль. Если я наберу return v.silencer вручную, это сработает.

1 Ответ

5 голосов
/ 12 июня 2019

В Lua вы можете индексировать таблицу двумя способами.

Как вы уже сделали, вы можете использовать ., например sometable.key, но это просто синтаксический сахар для другого метода индексации, sometable["key"]оба из них используют строку key для индексации таблицы.

ваш код может выглядеть следующим образом:

function CheckWeapon(ped, key)-- where key is a string ie: "attachment"
    for k,v in pairs(weapons)do
        if GetHashKey(k) == GetSelectedPedWeapon(ped) then
            print(v[key])
            return v[key]
        end
    end
    return false
end

с помощью опции sometable["key"] также допускаются ключи, к которым нет доступас ., например

sometable["my key"] -- note the space
sometable["1st_key"] -- note it begins with a number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...