Lua基础学习(一)

     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 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值