-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path函数
72 lines (49 loc) · 1.4 KB
/
函数
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
特殊调用
o:foo(x) 相当于 o.foo(0,x)
参数可变
function f(x,y)return a or b end
f(3) a=3 b=nil
f(3,4) a=3 b=4
f(3,4,5) a=3 b=4 5被丢弃
多返回值
function f(x,y)return a,b end
c,d = f(10,20) c=10 d=20 几个返回值定义几个接收,如果 也可以只定义一个来接收第一个
c = f(10,20) b返回值就被丢弃了
c,d,e = f(10,20) c=10 d=20 e=nil
print(f(10,20)) 输出 10 20
print(f(10,20)..x) 输出10x 当出现在表达式时候只返回第一个值
print((f(10,20))) 10 放在括号里只返回第一个值
unpack
print(unpack({10,20,30})) 结果是 10 20 30
a,b=unpack({10,20,30}) a=10 b=20
可变参
function add(...)
local s = 0
for _,v in pairs{...}do
s=s+v
end
return s
end
print(add(20,30,40))
注意这边的pairs{} 是用{} 大括号,函数遍历可变参时通常都用{...}
select函数:
function test(...)
for i=1,select('#',...)do
print(select(i,...))
end
end
test(20,30,40)
结果是:
20 30 40
30 40
40
select(i,...) 是返回从i开始后面的所有参数包含i,select('#',...) '#'返回可变参的总数包含你如果传的是nil
用table去做具名参数
rename{old="old",new="new"} 实参只有一个table做参数的时候可以省略()
table = {old="old",new="new"}
rename(table)
函数是变量:
a={p=print}
a.p(123) 输出123
print=math.sin
a.p(print(1)) 输出0.8414709848079