Lua for 的使用

article/2023/6/4 15:54:00

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

1,数值型遍历

语法为:

for name=exp1, exp2 [,exp]

do

-- do something

end

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

1)递增型

#!/usr/local/bin/luafor v = 1, 5, 1
doprint("v="..v);
end

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

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

 

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

2)递减型 

#!/usr/local/bin/luafor v = 5, 1, -1
doprint("v="..v);
end

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

2,泛型遍历

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

1)table 有key的时候

#!/usr/local/bin/lualocal config = 
{DefaultHostIp = "192.168.1.108",DefaultNetMask = "255.255.255.0",DefaultGateway = "192.168.1.1",
};for key, value in pairs(config)
doprint("table_test["..key.."] = "..value);
end

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

2)table 没有key的时候

#!/usr/local/bin/lualocal config = 
{"192.168.1.108","255.255.255.0","192.168.1.1",
};for key, value in pairs(config)
doprint("table_test["..key.."] = "..value);
end

 

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

3)利用 table 的大小

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

#!/usr/local/bin/lualocal config = 
{"192.168.1.108","255.255.255.0","192.168.1.1",
};for key, value in pairs(config)
doprint("table_test["..key.."] = "..value);
endfor index = 1, #(config)
doprint(index.." = "..config[index]);
end

 

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

 

http://www.ngui.cc/article/show-1007688.html

相关文章

HJ64 MP3光标位置(java详解)

就是一块诺基亚手机屏幕,只能显示四个歌曲,upper代表屏幕显示第一个歌曲(总歌曲中第几个),down代表屏幕显示的最后一个歌曲(总歌曲中第几个) 你要输入这个总歌曲数量n {初始值,cur0,upper0,downMath.min(3,n-1);}{为啥cur为0,例如打开QQ音乐光标不都是显示在第一个歌曲位置嘛} …

C++初阶——类和对象(3)赋值/运算符重载

目录 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 6.日期类的实现——流插入,流提取重载 Date.h: Date.cpp: 7.const成员 8.取地址及const取地址操作符重载 5.赋值运算符重载 5.1 运算符重载 C为了增强代码的可读性…

建堆、堆排序、TopK问题大合集

一、如何建堆 1、向上调整建堆法O(NlogN) 原理: 利用向上调整的方法进行建堆,是通过模仿之前堆的插入操作,从第二个数开始,每次插入一个数,就对这个数进行向上调整,这样子既保证了原有数据为堆&#xff…

测试开发进阶系列课程

测试开发系列课程1.完善程序思维--------案列:图书管理系统的创建**(一)图书管理系统的创建**1.完善程序思维--------案列:图书管理系统的创建 (一)图书管理系统的创建 1.在main中写入主函数,…

数位DP算法学习总结

一、数位dp简述模板数位dp是一种计数时使用的动态规划算法,一般是要统计一个区间 [left, right] 内符合给定条件数字的个数,例如HDU 2089 不要62中的统计给定区间内不包含4以及62数字的个数,数位dp其实是暴力枚举算法的优化,通过过…

添加Anaconda Powershell Prompt到右键

想要使用Anaconda Powershell Prompt每次还要去开始菜单打开,而且还要切换到特定目录下,十分麻烦。通过将Anaconda Powershell Prompt添加到鼠标右键,可在当前目录十分方便的打开Anaconda Powershell Prompt。步骤如下: 1. 首先开…

Java_Spring:4. 使用 spring 的 IoC 的实现CRUD【案例】

目录 1 需求和技术要求 1.1 需求 1.2 技术要求 2 环境搭建 2.1 拷贝 jar 包 2.2 创建数据库和编写实体类 2.3 编写持久层代码 2.4 编写业务层代码 2.5 创建并编写配置文件 3 配置步骤 4 测试案例 4.1 测试类代码 4.2 分析测试了中的问题 1 需求和技术要求 1.1 需求…

Spring - Spring 注解相关面试题总结

文章目录01. Spring 配置方式有几种?02. Spring 如何实现基于xml的配置方式?03. Spring 如何实现基于注解的配置?04. Spring 如何基于注解配置bean的作用范围?05. Spring Component, Controller, Repository, Service 注解有何区别…

2023-3-25 java选择题每日一练

继承中类, 静态代码块, 实例代码块和构造方法的执行顺序其原理如下:当没有子类继承的时候顺序:静态代码块 → main → 构造代码块 → 构造方法public class Test {static{System.out.println("父类静态代码块开始执行!");}{System.out.println…

【WMS学习】从悬浮窗的添加来看窗口的add和update

这里我们从一个悬浮窗应用来查看WindowManager的addView使用,从这里作为突破口来认识窗口的添加,和窗口的位置大小更新方法updateViewLayout,使用WindowManager的addView方法来添加窗口非常的直观,因为Activity的显示中&#xff0…