Перейти к контенту

Язык Lua. Общие вопросы программирования


Malandrinus

Рекомендуемые сообщения

Доброго времени суток.

Есть таблица такого типа

local tabl = {
    ["t1"]      = {{"s1",40},{"s2",25},{"s3",5}},
    ["t2"]      = {{"x1",40},{"x2",30},{"x3",5}},
    ["t3"]     = {{"z1",40},{"z2",40},{"z3",5}}

}

и есть такая функция

local sec = rnd(tabl[key]) -- key = t1 or t2 or t3
function rnd(t)
    local sum = 0
    local rand = math.random(100)
    for i,v in ipairs(t) do
        sum = sum + v[2]
        if rand <= sum then
        return v[1]
        end
    end
end

Выдаёт ошибку bad argument #1 to 'ipairs' (table expected, got nil)

Что я делаю не так? Пожалуйста, подскажите. Заранее спасибо.

 

Когда умрёшь, увидишь кнопки

"О'кей" и "Главное меню"
Под ними "Новая" и "Выход"

И неактивная "Назад"

 

Поделиться этим сообщением


Ссылка на сообщение
И я бы использовал перебор for i=1,#t do

В этом случае вылетаем с attempt to get length of local 't' (a nil value)

 

то функция rnd возвратит nil. Так и задумано?

Нет, конечно. Просто не так поставлено. Это для примера

 

что в качестве key ты передаёшь то, что нужно?

Проверил, действительно, не все данные были правильными. Но, к сожалению, после исправления вылет остался.

 

Вопрос решил. Можно не париться. @ColR_iT, спасибо за наводку. Ты оказался прав.

Изменено пользователем toxictrace

Когда умрёшь, увидишь кнопки

"О'кей" и "Главное меню"
Под ними "Новая" и "Выход"

И неактивная "Назад"

 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...