今天,进入函数的学习,这是我的笔记,同时也愿意分享给大家。
一.函数参数
1.函数的所有参数必须放在一堆圆括号中,除了一种情况
一个函数只有一个参数,并且此参数是一个字面字符或者table构造式,圆括号可有可无。
例如:print "hello world" <==> print("hello world")
2.若实参多于形参,舍弃多余实参;若实参不足,多余形参初始化为nil
二.函数返回值
1.函数允许返回多个返回值。
1.1 return
return 返回多个返回值时,只需要在return 后列出所有的返回值
例如:return m,n
2.函数调用获取返回值
2.1只有当一个函数调用是以下表达式中的最后一个元素(或者仅有一个元素)时,才获得它的所有返回值。
4种表达式:多重赋值、函数调用时传入的实参列表、table的构造式和return语句。
2.2一个函数调用不是以上4种表达式的最后一个元素,那么将只产生一个值,且为第一个值。
2.3迫使函数只返回一个结果
将一个函数调用放入一对圆括号中。
例如: function f()
return "a","b"
end
print((f())) --> a
三.变长参数
1. ...
1.1作为参数 --> 表示该函数可接受不同数量的实参。
例如:
function add(...)
local s = 0
for i,v in ipairs{...} do
s = s+ v
end
return s
end
1.2作为表达式
例如:local a,b = ...
2.具有变长参数的函数同样也可以拥有固定参数,但固定参数必须放在变长参数之前。
四.具名实参
实参是通过它在参数表中的位置与形参匹配起来的,特殊情况:具名实参。(通过名称来指定实参)
将所有实参组织到一个table中,并将这个tabke作为唯一的实参传给函数。