本帖最后由 Aitlo 于 2021-8-20 14:59 编辑  
- -- 函数进阶_实参简化
 
  
- function MyFunction()
 
 -         print('我的函数')
 
 - end
 
  
- -- 调用函数
 
 - MyFunction()
 
  
- -- 带参函数
 
 - function SetName(str)
 
 -         
 
 -         print('请设置您的昵称:'..str)
 
 - end
 
  
- -- 字符串形式参数调用
 
 - SetName('Aitlo')
 
 - SetName 'Aitlo'                -- 如果‘实参’是字符串,则圆括号可以简化
 
  
- -- 带参函数
 
 - function SetNamerray(nameArray)
 
 -         for i,v in ipairs(nameArray) do
 
 -                 print(v)
 
 -         end
 
 - end
 
 - numArray = {1,2,3,4}
 
 - SetNamerray(numArray)
 
 - -- Table形式的参数调用
 
 - SetNamerray {'张三','李四','王五'}                -- 参数的简化
 
  
- --[[参数的简化
 
 - 函数只有一个参数,并且参数是一个字符串或者table构造式,则(实参)圆括号可以省略,这种语法现象成为“参数的简化”--]]
 
  
- --[[可变参数
 
 - “可变参数”又称为“变长参数”,使用符号“...”表示多个参数,主要应用在形参中。
 
 -         注意:这里的关键字功能类似C#中的 para关键字--]]
 
 
  复制代码- -- 学习可变参数
 
 - -- 定义一个具备“可变参数”的函数
 
 - function MultiParaVal(...)                        -- 注意:这里“...”是一个关键字,表示多个参数。
 
 -         for i,v in pairs({...})do
 
 -                 print(v)
 
 -         end
 
 - end
 
  
- -- 测试“可变参数”
 
 - MultiParaVal('叶文洁','罗辑','史强','章北海')
 
  
- -- 编写简化“可变参数”的写法
 
 - --lua语言有一个内置函数“arg”来代替“{...}”
 
 - function MultiParaVal(...)                        -- 注意:这里“...”是一个关键字,表示多个参数。
 
 -         -- 输出形参的个数
 
 -         print('输入参数的个数=',#arg)        -- 表示输入参数的个数
 
 -         -- for i,v in ipairs(arg)do                -- ipairs 关键字遇到nil,则不再输出
 
 -         for i,v in pairs(arg)do                        -- pairs 关键字可以输出集合中所有飞nil 数值
 
 -                 print(v)
 
 -         end
 
 - end
 
  
- -- 测试“可变参数”
 
 - MultiParaVal('叶文洁','罗辑','史强','章北海')
 
  
 
- --[[注意事项一:
 
 -         1、lua5.0以上版本通过局部table变量“arg”可以接收所有变长参数。arg是lua中内置的函数,本质是可以把可变参数封装为一个表。(#arg也表示参数的个数)
 
 -         2、函数访问变长参数时,使用“{...}”表达式访问。
 
 -         
 
 -         注意事项二:
 
 -         如果变长参数中可能包含nil,则必须使用“select”来访问变长参数。嗲用select 时必须传入一个固定的实参select(选择开关)和一系列变长参数。
 
 -         格式:
 
 -                 1、select(index,...)返回index 下标开始,知道变长参数数列表结尾的元素。
 
 -                 2、select('#',...,) 返回变长参数列表的长度。--]]
 
 -                 
 
 -                 
 
 -                 
 
 - -- 对于存在“nil”数值的输入,如何进行“可变参数”函数的编写
 
 - -- 含义解释:
 
 - -- select('#',...) 表示,返回可变参数的长度
 
 - -- select(i,...) 表示,返回从索引数值到可变参数所有内容
 
 - function MultiParaVal(...)                        -- 注意:这里“...”是一个关键字,表示多个参数。
 
 -         -- 输出形参的个数
 
 -         -- print('输入参数的个数=',#arg)        -- 使用#arg 不能用 select,会有冲突。  一定会报错
 
 -         print('输入参数的个数=',select('#',...))        
 
 -         local num
 
 -         
 
 -         print(select(1,...))        -- 输出:可变参数里所有的内容:叶文洁        罗辑        史强        nil        章北海
 
 -         
 
 -         for i=1,select('#',...)do
 
 -                 -- num = select(i,...)
 
 -                 -- print(num)
 
 -                 
 
 -         end
 
 - end
 
 - -- 测试“可变参数”
 
 - MultiParaVal('叶文洁','罗辑','史强',nil,'章北海')
 
  复制代码 
 
 
 |