Lua基础学习(一)

这篇博客介绍了Lua的基础知识,包括table的特性和使用、函数与闭包、协同程序、元表和模块系统。讨论了Lua中如何创建和操作table,如通过pairs遍历,以及table的引用比较。此外,讲解了Lua的变量赋值、环境与函数的环境变量,以及如何通过setfenv改变函数的环境。还深入探讨了协同程序的概念,以及Lua的元表机制,包括元方法和元表在实现面向对象编程中的作用。最后,文章提到了Lua的模块系统,如何使用require和module函数加载和创建模块。
摘要由CSDN通过智能技术生成
     0、可以将一个table想象成一种动态分配的对象,程序仅仅持有一个对他们的引用(或指针),Lua不会暗中产生table的副本或创建新的table。table永远是匿名的(anonymous),一个持有table的变量与table自身没有固定的关联性。感觉与python完全类似。

      Lua中怎么分配一块大的连续的数组,只用语言本身。table.insert不行。
      table中有那些接口,查一下?可以直接通过for k,v in pairs(table) do print(k,v) end得到。
      Lua中获取某个变量的地址?
     
     1、注意,print({} == {}) 输出false。因为table、userdata和函数,Lua是作引用比较的。也就是说,只有当他们引用一个对象时,才认为他们相等。而print("abcdef" == "abcdef")会返回true,因为在Lua在VM内对相同的string永远只保留一份copy。table例子:
           
     
     2、通常写法:x = x or v,将x设置一个默认值v。

     3、Lua允许多重赋值,比如local a,b = 1,2,则变量a和b都是局部变量,值分别为1,2。在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值。Lua总是会将等号右边值的个数调整到与左边的个数相一致。特殊例子:
      

     4、Lua会调整一个函数的返回值数量以适应不同的调用情况。若将函数调用作为一条单独语句时,Lua会丢弃函数的所有返回值。若将函数作为表达式的一部分来调用时,Lua只保留函数的第一个返回值。只有当一个函数调用是一系列表达式中的最后一个元素(或仅有一个元素)时,才能获得它的所有返回值。这里所谓的“一系列表达式”在Lua中表现为4中情况:多重赋值、函数调用时传入的实参列表、table的构造式和return语句。特殊例子:
     5、setfenv(f,table): Sets the environment to be used by the given function.  f  can be a Lua function or a number that specifies the  function at that stack level: Level 1 is the function calling 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值