【问题标题】:Access a specific table depending on a variable in lua根据 lua 中的变量访问特定表
【发布时间】:2022-10-21 21:37:20
【问题描述】:

你好我对lua有一点问题。我想根据脚本开头定义的路由变量访问包含路由信息的表之一。但是每次我运行程序时,我总是得到 nil 作为答案。有人知道如何解决吗?

route = 1

local eastCityRoute = {
    {name = "ecr-stop1"},
    {name = "ecr-stop2"},
    {name = "ecr-stop3"},
}

local westCityRoute = {
    {name = "wcr-stop1"},
    {name = "wcr-stop2"},
    {name = "wcr-stop3"},
}

routes = {}
routes[1] = eastCityRoute
routes[2] = westCityRoute

print(routes[route][name])

【问题讨论】:

  • print(routes[route][name]) 应该是 print(routes[route][1].name) 其中 1 是您的第一站。如果您希望name 返回字符串eastCityRoute,那么您需要像routes[1] = {route = eastCityRoute, name = "eastCityRoute"} 这样在表中定义路由

标签: lua


【解决方案1】:
local eastCityRoute = {
    {name = "ecr-stop1"},
    {name = "ecr-stop2"},
    {name = "ecr-stop3"},
}

简称

 local eastCityRoute = {
    [1] = {["name"] = "ecr-stop1"},
    [2] = {["name"] = "ecr-stop2"},
    [3] = {["name"] = "ecr-stop3"},
 {

让我们看看你剩下的代码:

您创建一个全局表 routes 并在其中存储两个表 eastCityRoutewestCityRoute

routes = {}
routes[1] = eastCityRoute
routes[2] = westCityRoute

现在你试试这个:

print(routes[route][name])

route1 所以 routes[route] 等价于 routes[1] 解析为 eastCityRoute

但是eastCityRoute[name] 等于eastCityRoute[nil]。由于eastCityRoutes 没有具有正确__index 元值的元表eastCityRoute[nil] 解析为nil

eastCityRoute[name]eastCityRoute["name"] 不一样!!! 在一种情况下,您使用变量进行索引,而在另一种情况下,您使用文字字符串进行索引。

请阅读 Lua 参考手册。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2017-09-22
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多