lua语言-《lua程序设计》1~5章基础学习

?lua语言-《lua程序设计》1~5章基础学习

由于openwrt的web,不得不看lua语法,《lua程序设计》一书讲的很详细基础,比较易懂,以下为重点记录。

1.注释与取消注释
添加注释
--[[
print("hello world")
--]]
取消注释只要加“-”即可
---[[
print("hello world")
--]]
2.lua中的字符串是不可变的值,不能像c语言那样直接修改字符串的某个字符
3.lua中的table类型实现关联数组,也就是具有特殊索引方式的数组,除了整数,还可以用字符串等方式
由构造表达式完成,最简单的构造表达式是{}
a = {} --创建一个table,并将它的引用存储到a
k = "x"
a[k] = 10 --新条目,key=“x”,value=10
a[20] = "great" --新条目,key=20,value=“great”
a.x = 10 --等同于a["x"] = 10,以字符串索引打牌table
4.虽然可以任何数字作为table的索引起始值,但lua的习惯,通常以1作为索引起始值
5.使用tonumber()可以显示转为为整数
6.lua的函数很有特色
可以存储在变量中
可以作为参数
可以程序重新定义这个函数
可以返回多个结果
可以嵌套在函数中
7.repeat..until语句的使用相当于c中的do..while(条件)
注意:一个声明在循环体中的局部变量作用域包括条件测试
8.数字型for(numeric for)
语法如下:
for var=exp1,exp2,exp3 do
<执行体>
end
var从exp变化到exp2,exp3为可选的,作用是指定步长,如果不指定,默认为1
9.泛型for(generic for)
通过迭代器函数遍历所有值,不应该对循环遍历赋值
语法如下: --打印数组a的所有值
for i,v in ipairs(a) do print(v) end
lua基础库提供遍历数组的迭代器函数ipairs(),i被赋予索引值,V被赋予该索引的数组元素值
标准库提供的迭代器:
迭代文件中的每行:io.lines
迭代table的元素:pairs
迭代数组的元素:ipairs
迭代字符串的单词:string.gmatch
10.函数专讲
一个函数若只有一个参数,并且此参是字符串或table构造式,()可有可无
print "hello word" 相当于 print("hello word")
f{x=10,y=20} 相当于 f({x=10,y=20})
面向对象式的调用,冒号操作符
o.foo(o,x) 另一中写法是 o:foo(x),o隐式的作为函数的第一个参数
调用函数时提供的实参数量可以与形参数量不同,lua自动调整实参数量匹配参数表要求
函数具有变长参数,使用表达式"...",表示接受不同数量的实参
示例;
function add(...)
local s=0
for i,v in ipairs{...} do
s=s+v
end
return s
end
print(add(3,4,10,25,12))
注1.多值恒等式函数:function id(...) return ... end
注2.select("#",...);返回所有变长参

数的总和,其中包括nil

具名实参:通过名称来指定实参
实现是将实参组织搭配一个table中,并将这个table作为唯一的实参传给函数,上面讲了,实参
只有一个table构造式,函数调用的圆括号"()"可有可无。所以可以写成如下示例:
os.rename{old="temp.lua",new="temp1.lua"} --os.rename()的作用是重命名



相关主题
相关文档
最新文档