在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
【lua keynote2】 1、Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)。 > s, e = string.find("www.runoob.com", "runoob") > print(s, e) 5 10 2、Lua函数可以接受可变数目的参数,和C语言类似在函数参数列表中使用三点(...) 表示函数有可变的参数。 Lua将函数的参数放在一个叫arg的表中,#arg 表示传入参数的个数。 function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end print("总共传入 " .. #arg .. " 个数") return result/#arg end print("平均值为",average(10,5,3,4,5,6)) 3、当参数只有一个,且为字符串或{}时,函数调用可以省略括号。 print "Hello World" f{x=10,y=20} f({x=10,y=20}) type{} type({}) 4、多重赋值下,若函数为最后一个调用,则返回所有return值;若函数为第一个调用,则仅返回一个值 。 function foo2( ... ) return "a","b" end x,y,b=10,foo2() --x=10,y='a',z='b' x,y=foo2(),10 --x='a',y=10 函数调用传参时,也同样是这个规则:
5、函数调用时加上()将只有一个返回值。 6、select(n,...)返回第n个变参数。select('#',..) 返回变参长度。 7、table.sort()用于给函数排序。 8、从技术上讲,Lua只有closure。函数是一种特殊的closure。 9、package.loadlib(path, func_name) 实现动态机制。 10、coroutine.wrap()不是返回协程本身,而是返回一个函数。每当调用这个函数,就可唤醒一次协程。 11、下述代码,每次buff=buff..line都会创建一个新字符串,当buff很大时,开销会很大。 local buff = "" for line in io.lines() do buff=buff..line.."\n" end
|
请发表评论