Lua 学习笔记(2) 类型与值、表达式、语句、迭代器、泛型for

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l773575310/article/details/82715966

Lua 学习笔记(2) 类型与值、表达式、语句

参考书籍:
《Lua程序设计》


Lua是一种动态类型的语言

8种基本类型:

  1. nil
  2. boolean
  3. number
  4. string
  5. userdata
  6. function
  7. thread
  8. table

nil

表示无效值(non-value),可用来删除一个变量

boolean

falsenil 都为假,其他都为真(包括0和空字符串)。

number

--下面都是合法数字常量
4
0.4
4.2e-3
0.31e14
3e+23

string

lua的字符串是不可变的值,修改字符串需要重新创建。

--多行字符串:
page = [[
<html>
...
</html>
]]



--[==[
    这里的代码被注释了,中间多个等号对称
]==]

table

可以表示:模块(module)、包(package)、对象(object)。

  • 输入io.read的含义:io模块的read函数。实际lua表示:用read作为key,索引表 io中。
  • a.x = 10 等价与 a["x"] = 10
--读取文件前10行
for i = 1, 10 do
	a[a#+1] = io.read()
	--a[i] = io.read()
end

userdate

可以将C语言数据存储到lua变量中,但只能进行赋值和相等性测试。


表达式

a % b == a - floor(a/b) * b

x%1    		--取x的小数部分
x -  x%1		--取x的整数部分

x = math.pi
print(x - x%0.01) 		-->3.14,取x精确到小数点后两位


--对于table、userdate和函数,lua作引用比较,即引用同一个对象时,它们才相等。
a = {}; a.x = 1
b = {}; b.x = 1
c = a
a == c   		-->true
a == b 		-->false

--给默认值方法
x = x or v		--即x为nil时,x = v


语句

local foo = foo:将全局变量foo初始化局部变量foo。可以加速当前作用域对foo的访问。

迭代器

迭代器:

  • 迭代文件每行:io.lines
  • 迭代table元素:pairs
  • 迭代数组元素:ipairs
  • 迭代字符串中单词(string.gmath)

泛型for

保存着三个值(表达式的返回值):

  1. 迭代器函数
  2. 恒定状态(invariant state)
  3. 控制变量(control variable)
  • 通常一个基于closure实现的迭代器比使用table的迭代器更高效。

猜你喜欢

转载自blog.csdn.net/l773575310/article/details/82715966
今日推荐