-
Notifications
You must be signed in to change notification settings - Fork 0
/
type.lua
151 lines (117 loc) · 4.35 KB
/
type.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by chuckchen.
---
---lua中有八种基本类型 可以使用type来查看变量类型
---1. nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
print("----------------------------nil------------------------")
print(type(nil))
--对于全局变量和table nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉,
tab1 = {key1 = "val1", key2 = "val2", "val3"}
for k, v in pairs(tab1) do
print(k.."-"..v)
end
tab1.key1 = nil
for k, v in pairs(tab1) do
print(k.."-"..v)
end
--和nil比较时应该加上引号
type(x)
print(type(x) == nil)
print(type(x) == "nil")
---2. boolean 包含两个值:false和true。
print("----------------------------boolean------------------------")
print(type(true))
print(type(false))
print(type(nil))
if false or nil then
print("至少有一个是 true")
else
print("false 和 nil 都为 false")
end
if 0 then
print("数字 0 是 true")
else
print("数字 0 为 false")
end
---3. number 表示双精度类型的实浮点数
print("----------------------------number------------------------")
print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(0.2e-1))
print(type(7.8263692594256e-06))
---4. string 字符串由一对双引号或单引号来表示
print("----------------------------string------------------------")
print(type("hi "))
--在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:
print("2" + 6) --将"2"转换成数字2 结果为 8.0
print("2" + "6")
print("2 + 6") --still string
print("-2e2" * "6")
--print("error" + 1) --error
--也可以用 2 个方括号 "[[]]" 来表示"一块"字符串。
html = [[
<html>
<head></head>
<body>
<a href="http://www.runoob.com/">菜鸟教程</a>
</body>
</html>
]]
print(html)
--使用..来连接字符串
print("a".."b")
--使用 # 来计算字符串的长度,放在字符串前面,如下实例
s = "i love you"
print("the len of s is: "..#s)
---5 function 由 C 或 Lua 编写的函数
print("----------------------------function------------------------")
--在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里:
function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n-1)
end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
--function 可以以匿名函数(anonymous function)的方式通过参数传递:
function foo(tab, fun)
for k ,v in pairs(tab) do
print(fun(k, v))
end
end
tab={key1="val1",key2="val2"}
foo(tab, function(key, val)
return key.."="..val
end)
---6 userdata 表示任意存储在变量中的C数据结构
---7 thread 表示执行的独立线路,用于执行协同程序
---8 table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
print("----------------------------table------------------------")
--用来创建一个空 table
local tab1 = {}
--Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。
local tab3 = {}
tab3["key"] = "val"
tab3[10] = 20
for k, v in pairs(tab3) do
print(k..":"..v)
end
--不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。
local tab2 = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tab2) do
print("key_idx".." "..key)
end
--table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。
local tab4 = {}
for i = 1, 10 do
tab4[i] = i
end
tab4["key"] = "val"
print(tab4["key"])
print(tab4["none"])