Lua学习中的心得体会
程序员文章站
2022-03-02 14:57:37
...
1.逻辑运算符-短路规则
–需要进行“短路规则”判断的例子
–print(10 and 20) --output: 20
–print(nil and 80) --outpu: nil
–print(false and 66) --output: false
–print(2 or 5) --output: 2
–print(false or 10) --output: 10
–print(“你好” and 10) --output: 10
–print(20 or “hello”) --output: 20
2.关键字pairs与ipair的区别
pairs会遍历table的所有键值对,table就是键值对的数据结构。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integer key值从1开始遍历的。
请看个例子:
tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"}
for k,v in ipairs(tb) do
print(k, v)
end
输出结果就是:
1 oh
2 my
3 god
因为tb不存在tb[4],所以遍历到此为止了。
for k,v in pairs(tb) do
print(k, v)
end
输出结果:
1 oh
2 my
3 god
6 world
5 hello
我们都能猜到,将输出所有的内容。然而你发现输出的顺序跟你tb中的顺序不同。
如果我们要按顺序输出怎么办?
for i = 1, #tb do
if tb[i] then
print(tb[i])
else
end
当然,仅仅是个数组的话,ipairs也没问题。
3.表长度的输出
对表进行遍历输出时,没有键值对的表可以直接通过#或者table.getn获取表的长度,有键值对的表需要通过迭代器函数pairs或者ipairs来获取表的长度.
4.表最大值的问题
表tab={10,11,55,33,100}采用table.maxn函数求最大值时,返回的值是5,此官方函数有BUG,实际输出的是表的长度,而不是表的内容中的最大值.
5.可变参数
对可变参数进行遍历时,用ipairs碰到nil时会停止遍历,用pairs碰到nil时会跳过继续遍历,如果想遍历到nil则需要用select关键字,select(’#’,…)可以获取可变参数的长度,需要注意的是select关键字同arg冲突,同时select(i,…)的含义是从位置1开始遍历所有的可变参数,所以如果是打印输出所有的可变参数,可以不用使用for循环,如果需要对其中的值进行逐个操作,则需要
local num
for i=1,select('#',...) do
num=select(i,...)
print(num)
end
6.随机数
在使用随机函数math.random(1,10)时会发现数值并不随机,主要原因在于lua中随机函数的使用需要配合math.randomseed(os.time()),其中os.time()可以得到系统的时间,因其格式是转换后一个时刻变化的整数值,所以作为可变因子传入十分合适,只有当可变因子数值发生大的变化时,才能影响到随机函数的数值.同时如果想让随机因子变化的幅度比较大,可以通过string.reverse(tostirng(os.time())来对数值进行翻转.
加粗样式
上一篇: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
推荐阅读
-
学习php中的正则表达式_php实例
-
学习淘宝网页中的代码_html/css_WEB-ITnose
-
初学习Joomla中的几个小问题?请问
-
PHP中的cURL请求及示例学习笔记
-
Lua中break语句的使用方法详解
-
Lua字符串库中的几个重点函数介绍
-
PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_PHP教程
-
php学习之道:php中is_file和file_exist的区别,and判断目录is_dir
-
JAVASE 小白学习笔记 (12-3)Java中的常用类--StringBuffer类、StringBuilder类