首先看一下array.lua的代码
$debug
a = @()
i=0
while i<10 do
a[i] = i*i
i=i+1
end
r,v = next(a,nil)
while r ~= nil do
print ("array["..r.."] = "..v)
r,v = next(a,r)
end
$debug
a = @()
--在lua中起什么作用,暂时不清楚,但是根据代码上下文,应该是定义了一个数组a
2012.08.16
--定义table的语法,Lua通过table来实现数组
--在Lua中习惯上数组的下标从1开始,Lua的标准库与此习惯保持一致。
因此如果你的数组下标也是从1开始你就可以直接使用标准库的函数,
否则就无法直接使用
i=0
while i<10 do
a[i] = i*i
i=i+1
end
--上面这个代码在非交互式模式下,是一个语句块,在交互模式下i=0应该是一个独立的
语句块。这些概念我是在lua5.1手册看到。先不管 2012.08.16
--实现了为数组a的赋值
--需要仔细关注table的
r,v = next(a,nil)
--next是一个什么函数?作用?2012.08.16
--在代码里应该是返回数组a的索引和值,因为lua里function可以返回多个值。2012.08.16
--next(a,nil)应改返回数组a的第一个索引以及第一个值。2012.08.16
--lua5.1 11..1
--且数组不必事先指定大小,大小可以随需要动态的增长
--可以根据需要定义数组的下标从0,1或者任意其他的数值开始
--next的实现在hash.c文件lua_next函数
print ("array["..r.."] = "..v)
--首先..是一个连接符号,挺像c++,java里的多个字符串相加的效果。
--如果连接符号左右是数字,数值,将转化为字符串。2012.08.16
--比c里打印数值要简单,如何实现打印不同格式的数值呢?2012.08.16
貌似lua代码里不支持中英文混排,起码在lua1.0里是这样。