-
Notifications
You must be signed in to change notification settings - Fork 0
/
006_Function.lua
82 lines (72 loc) · 2.23 KB
/
006_Function.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
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by 86176.
--- DateTime: 2022/12/6 23:15
---
-- 函数
-- 函数只能在定义之后执行,在定义之前执行会报错(lua 是从上到下依次执行)。
-- 函数 无参数无返回值
function TestFunction_1()
print("函数 无参数无返回值 写法1");
end
TestFunction_1();
TestFunction_2 = function()
print("函数 无参数无返回值 写法2 有点类似 C# 的委托和事件");
end
TestFunction_2();
-- 函数 有参数无返回值(如果不传入参数会自动补 nil 传入参数多了则会丢弃)
function TestFunction_3(value)
print("函数 有参数有返回值 写法1");
print(value);
end
TestFunction_3();
TestFunction_3(999);
TestFunction_3(true);
TestFunction_3("String");
TestFunction_3(999, true, "String");
-- 函数 有参数有返回值(多返回值,申请对应变量个数接到即可,变量数不够不影响,值取对应位置值,变量数多了则返回 nil)
function TestFunction_4(value)
print("函数 有参数有返回值 写法1");
return "ABC", true, 1.3, value;
end
testValue1, testValue2, testValue3, testValue4, testValue5 = TestFunction_4(false);
print(testValue1, testValue2, testValue3, testValue4, testValue5);
-- 函数 类型
function TestFunction_5()
print("function type is " .. type(TestFunction_5));
end
TestFunction_5();
-- 函数 重载(lua 中不支持重载,默认会调用最后一个声明的函数)
function TestFunction_6()
print("无参数函数");
end
function TestFunction_6(value)
print("一参数函数 :" .. value);
end
TestFunction_6("ABC");
-- 函数 可变参数
function TestFunction_7(...)
args = { ... };
for i = 1, #args do
print(args[i]);
end
end
TestFunction_7("ABC", false, 123, true, type(TestFunction_7));
-- 函数 嵌套
function TestFunction_8()
return function()
print("ABC");
end
end
TestFunction_9 = TestFunction_8();
TestFunction_9();
-- 函数 闭包(改变函数内变量的生命周期)
function TestFunction_10(x)
-- 改变传入参数的生命周期。
return function(y)
return x + y;
end
end
TestFunction_11 = TestFunction_10(5);
print(TestFunction_11(5));
print(TestFunction_11(10));