Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
lua中的结构数组?_Lua_Lua Table - Fatal编程技术网

lua中的结构数组?

lua中的结构数组?,lua,lua-table,Lua,Lua Table,lua是否支持某种c风格的结构 我想从c转换如下字体位图: struct charmatrix { char c; int line[5]; }; static charmatrix font[] = { "1", {0x2, 0x6, 0x2, 0x2, 0x2}, "2", {0xe, 0x1, 0x6, 0x8, 0xf}, "a" , {0x0, 0x5, 0xb, 0xb, 0x5} } font[letter].line[x] [编辑]添加了更多数据以显示非数字

lua是否支持某种c风格的结构

我想从c转换如下字体位图:

struct charmatrix { char c;  int line[5]; };
static charmatrix font[] =
{
  "1", {0x2, 0x6, 0x2, 0x2, 0x2},
  "2", {0xe, 0x1, 0x6, 0x8, 0xf},

  "a" , {0x0, 0x5, 0xb, 0xb, 0x5}

}

font[letter].line[x]

[编辑]添加了更多数据以显示非数字索引

Lua中不存在结构的原始概念,但表也有类似的用途

使用表格:

local font = {
  ["1"] = {0x2, 0x6, 0x2, 0x2, 0x2},
  ["2"] = {0xe, 0x1, 0x6, 0x8, 0xf}
}
然后可以访问
font[letter][x]
font.letter[x]
。请记住,Lua数组不是零索引的,因此x从1开始

如果需要更多的结构,则可以使用函数来构造表:

local function charmatrix(c, l1, l2, l3, l4, l5)
  return {[c] = { l1, l2, l3, l4, l5 }}
end

local font = {
  charmatrix("1", 0x2, 0x6, 0x2, 0x2, 0x2),
  charmatrix("2", 0xe, 0x1, 0x6, 0x8, 0xf),
}
但这可能有点过头了

编辑:如果要在代码中保留
,可以这样构造一个表:

local font = {
  ["1"] = { line = {0x2, 0x6, 0x2, 0x2, 0x2} },
  ["2"] = { line = {0xe, 0x1, 0x6, 0x8, 0xf} }
}
已访问
font[letter].line[x]
font.letter.line[x]


请注意,除了数字字符串之外,作为字符串的键在定义时不需要引号,这就是为什么
“1”
“2”
被定义时不被引号包围的原因。(因此您可以使用代码访问:
font[letter][“line”][x]

Lua中没有结构的原始概念,但表也有类似的用途

使用表格:

local font = {
  ["1"] = {0x2, 0x6, 0x2, 0x2, 0x2},
  ["2"] = {0xe, 0x1, 0x6, 0x8, 0xf}
}
然后可以访问
font[letter][x]
font.letter[x]
。请记住,Lua数组不是零索引的,因此x从1开始

如果需要更多的结构,则可以使用函数来构造表:

local function charmatrix(c, l1, l2, l3, l4, l5)
  return {[c] = { l1, l2, l3, l4, l5 }}
end

local font = {
  charmatrix("1", 0x2, 0x6, 0x2, 0x2, 0x2),
  charmatrix("2", 0xe, 0x1, 0x6, 0x8, 0xf),
}
但这可能有点过头了

编辑:如果要在代码中保留
,可以这样构造一个表:

local font = {
  ["1"] = { line = {0x2, 0x6, 0x2, 0x2, 0x2} },
  ["2"] = { line = {0xe, 0x1, 0x6, 0x8, 0xf} }
}
已访问
font[letter].line[x]
font.letter.line[x]


请注意,除了数字字符串之外,作为字符串的键在定义时不需要引号,这就是为什么
“1”
“2”
被定义时不被引号包围的原因。(因此您可以使用代码进行访问:
font[letter][“line”][x]

“1”=
不是有效的lua语法。你需要在它周围加上
[]
。我不知道你为什么要引用
“1”
“2”
<代码>[1]=…,[2]=…会更清晰。事实上,你不必指定索引,只要写
localfont={{0x2,0x6,0x2,0x2},{0xe,0x1,0x6,0x8,0xf}
注意
font.letter
在这里不起作用,因为
letter
“1”
“2”
@Keith我确实需要显式索引,因为它们不全是数字的。。。0,1,2,…a,b,c,…a,b,C@MikeRedrobe:和
[“1”]=…
在语义上与
[1]=…
不同。例如,
{[1]=“foo”,[“1”]=“bar”}
为您提供了一个包含两个不同键/值对的表。(这里可能会有一些混淆。)
“1”=
不是有效的lua语法。你需要在它周围加上
[]
。我不知道你为什么要引用
“1”
“2”
<代码>[1]=…,[2]=…会更清晰。事实上,你不必指定索引,只要写
localfont={{0x2,0x6,0x2,0x2},{0xe,0x1,0x6,0x8,0xf}
注意
font.letter
在这里不起作用,因为
letter
“1”
“2”
@Keith我确实需要显式索引,因为它们不全是数字的。。。0,1,2,…a,b,c,…a,b,C@MikeRedrobe:和
[“1”]=…
在语义上与
[1]=…
不同。例如,
{[1]=“foo”,[“1”]=“bar”}
为您提供了一个包含两个不同键/值对的表。(这里可能会出现一些混乱。)