Lua for 的使用

        Lua 中的 for 循环有两种形式:数值型遍历和泛型遍历。

1,数值型遍历

语法为:

for name=exp1, exp2 [,exp]

do

-- do something

end

[,exp] 这个不是必须的,是可选项。它表示步长,即从name=exp1 如何变化到 exp2,所以有可能是递增,也有可能是递减,主要由[,exp] 决定。

1)递增型

#!/usr/local/bin/lua

for v = 1, 5, 1
do
    print("v="..v);
end

以上的for循环,变量v从1增加到5,每次增加 1 个步长,即循环 5 次,结果如下:

Lua for 的使用_第1张图片

如果步长是 2 的话,其结果如下:

 

如果没有步长,则默认就是 1。

2)递减型 

#!/usr/local/bin/lua

for v = 5, 1, -1
do
    print("v="..v);
end

Lua for 的使用_第2张图片

递减型只要把步长改成负数即可。

2,泛型遍历

        这种方法一般用于遍历 table。

1)table 有key的时候

#!/usr/local/bin/lua

local config = 
{
	DefaultHostIp = "192.168.1.108",
	DefaultNetMask = "255.255.255.0",
	DefaultGateway = "192.168.1.1",
};


for key, value in pairs(config)
do
    print("table_test["..key.."] = "..value);
end

Lua for 的使用_第3张图片

这种table里的表项是有 key=value 对的,如果是没有key,而只有 value 项呢,该如果 for 循环遍历呢?

2)table 没有key的时候

#!/usr/local/bin/lua

local config = 
{
	"192.168.1.108",
	"255.255.255.0",
	"192.168.1.1",
};


for key, value in pairs(config)
do
    print("table_test["..key.."] = "..value);
end

Lua for 的使用_第4张图片 

可以看到,此时默认的 key 就是 1,2,3, .....

3)利用 table 的大小

这个时候还可以这样打印出 table 的值:

#!/usr/local/bin/lua

local config = 
{
	"192.168.1.108",
	"255.255.255.0",
	"192.168.1.1",
};


for key, value in pairs(config)
do
    print("table_test["..key.."] = "..value);
end

for index = 1, #(config)
do
    print(index.." = "..config[index]);
end

 Lua for 的使用_第5张图片

其中 #(config) 是取 table 的大小,config[index] 当然就是 table 里的 value 了。

 

你可能感兴趣的:(Lua,lua)