LUA基础学习第二天

闭包函数

作用

延长局部变量的生命周期

应用

迭代器

   function AddNum()
      local i=1
   return function()
      i=i+1
      return i
    end
   end
   func = AddNum()
   print(func())
   print(func())
   print(func())

文件加载

准备:
lua2文件在同一个文件夹下,加载子层级时可以用 / 和 .
print(“ccccc”)
function AA( )
print(“aaaa”)
end
local function BB( )
print(“bbbb”)
end

local tab = { func =BB }
return tab

loadfile

loadfile(“模块名称/文件名”)
只加载不执行,无法调用该文件中任何语句
loadfile返回值是一个函数,执行函数
编译该文件

   f = loadfile("lua2.lua")     --注意同一个文件夹下
   f()
   AA()

dofile

dofile(“模块名称/文件名”)
加载并且执行,加载一次,执行一次

   dofile "lua2.lua"
   dofile "lua2.lua"
   AA()

require

require “文件名 不加后缀”
加载并执行文件,加载多次,只执行一次

   require "lua2"
   AA()

可以获取文件的返回值,并且使用

   tab01 = require "lua2"
   tab01.func()

lua协成 coroutine

挂起 正在运行 结束 正常
suspended running dead normal

   function  TextCo1(a,b)
   print(a,b)
   print(coroutine.status(co1))

1.创建协程

   //coroutine.create
   co1 = coroutine.create(TextCo1)

2.开启协程

coroutine.resume
首次开启协成时,参数传递给协成函数

   coroutine.resume(co1,10,20)
   print(coroutine,status(co1))

3.挂起协程 coroutine.yield

yield 的返回值 = resume 的参数
resume的返回值 对应yield的参数

    cc = coroutine.yield()
    print(cc)
    end

4.恢复协程

    coroutine.resume(co1,56)
    print(coroutine.status(co1))

结果:
suspended
10 20
running
suspended
56
dead

实例 2个协成的例子

在协成1中开启另一个协成2,协成1的状态为normal
return 执行后,不会执行end,协成1就会继续向下

   function PrintState()
      print("co1 state :" .. coroutine.status(co1))
      print("co2 state :" .. coroutine.status(co1))
   end

   function Co1Func(a)
      print("co1 :" .. a)
      printstate()
      s,rt = coroutine.resume(co2,2)
      print("co1 resume return:" .. rt)
      s,rt = coroutine.resume(co2,4)
      print("co1 resume return:"  ,  rt)
   end
   function Co2Func(b)
   print("co2 :" .. b)
   printstate()
   yreturn = coroutine.yield(3)
   print("co2 yreturn :" .. yreturn)
   -- coroutine.yield(5)
   end

   co1 = coroutine.create(co1Func)
   co2 = coroutine.create(co2Func)
   coroutine.resume( co1,1)
   printstate()


结果
   co1 :1
   co1 state: running
   co2 state: suspended
   co2 : 2
   co1 state: normal
   co2 state: running
   co1 resume return: 3
   co2 yreturn: 4
   co1 resume return: nil
   co1 state:dead
   co2 state:dead
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值