1,使用函数时必须带圆括号,除非函数只有一个参数,且此参数是字面字符串或者table构造式。
2,lua为面向对象式的调用提供了一种特殊的语法-冒号操作符。o:foo(x)==o.foo(o,x);
3,无论函数使用lua编写的还是用c编写的,在调用它时没有任何区别。
4,lua可以返回多个结果,只需在return后面列出所有的返回值即可。
5,lua调用一个函数的返回值数量以适应不同的调用情况:
函数调用作为一条单独语句时,lua会丢弃函数的所有返回值。
若将函数作为表达式的一部分来调用,lua只保留函数的第一个返回值。
当一个函数调用是一系列表达式中的最后一个元素(或仅有一个元素)时,才能获得它的所有返回值
所谓的一系列表达式有4种情况:
function foo2() return "a","b" end
1,多重赋值:x,y =foo2(),20; - - x="a",y=20;
2,实参列表:print(foo2(),1); - - >a 1
3,table 构造式:t={foo2(),4} -- t[1]="a",t[2]=4;
4,return语句:return foo2(); -- 这里不要加圆括号,否则只返回一个值。
6,unpack():接受一个数组作为参数,并从小标1开始返回该数组的所有元素。
7,变长参数: "..." select 来遍历一个函数的所有变长参数。
8,具名实参:直接受一个参数,实参只有一个table构造式。
9,函数是第一类值,与其他传统的类型的值有相同的权利。
table.sort(network,function(a,b) return (a.name>b.name) end)
10,closure 闭合函数:
11,”词法域“,一个函数写在另一个函数内部,便可以访问外部函数的局部变量的特征。
12,非全局的函数:
13,正确的尾调用:当一个函数的调用是另一个函数的最后一个动作时,该调用才算是一条尾调用。
只有return <func>(<args>) 这样的形形式才算是一条尾调用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。