函数
- 函数是对语句和表达式进行抽象的主要机制
两种用法
- 一是可以完成特定的任务,一句函数调用被视为一条语句
- 二是以只用来计算并返回特定的结果,视为一句表达式
print("Hello, World")a = math.sin(3) + math.cos(10)print(os.date())
- 无论哪种用法都需要将所有参数放到一对圆括号中
- 但如果参数是字面字符串或 table 构造式的话,可以放在括号中,也可以不放
- 即使在调用函数时没有参数,也必须有一个 () 空括号,如调用 os.date()
print "Hello, World" -- 等价于 print("Hello, World")print {1, 2, 3} -- 等价于 print({1, 2, 3})function add(a) local sum = 0 for i, v in ipairs(a) do sum = sum + v end return sumendb = {1, 2, 3}add(b)
- function 是定义函数的关键字
- add 是函数名
- a 是函数的形式参数,是函数定义式参数列表中的参数
- add(b) 调用这个函数所传入的参数称为实际参数
- 调用函数的实际参数的个数可以与函数定义时的形式参数个数不同
- lua 会自动调整实参的数量,以匹配参数表的要求,这和多s重赋值类似
- 若实参少于形参,多余的形参被初始化为 nil
- 若实参多余形参,多余的实参被抛弃
- lua 程序既可以使用 以 lua 编写的函数,也可使用 C 语言编写的函数
function f(a, b) return a or bendf(3) -- a = 3, b = nilf(3, 4) -- a = 3, b = 4f(3, 4, 5) -- a = 3, b = 4 ,5 被丢弃了
定义一个全局的计数器
function intCount(n) n = n or 1 -- 赋值一个默认值 count = count + 1end