• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua keynote2

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
一、ESP8266入门(基于LUA开发)发布时间:2022-07-22
下一篇:
lua中的随机数发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap