• LUA一些零散的学习笔记


    早听闻lua在游戏设计中的强大作用,特别是作为以C/C++为宿主的游戏程序的脚本,编写任务脚本,怪物AI,事件发生等非常灵活,却一直没有去学习和实践下,进来项目的引擎需要使用到较多的lua来编写脚本,终于有机会系统的学习和使用一下了。

    •  lua中的所有变量,如果没有申明local,那么都将被认为是全局变量;
    • 代码单行注释 -- 代码多行注释 --[[ ]]
    • 代码块可以通过 do ... end来包含,不是C语言中的{ }
    • 一行语句结束无需使用分号等符号
    • 变量可以同时多个赋值 a,b,c = 1,2,3
    • 不等符号的表示是 ~=
    • and 和 or的用法: and 率先返回不等true的值 , or 率先返回等于true的值
    • x = x or y 表示x不为真的话,x 就等于y
    • lua中, 只有false和nil被判定为false , 0为ture
    • 变量区分大小写, A和a是不同的两个变量
    • table类型我们可以看成是数组,Ta = {} 定义一个空表
    • table类型的自由度很高,跟php的数组有得一比,索引可以是数字,也可以是字符串,如果不写,系统会默认给一个数字作为索引,自动往后编(代替配置文件的好东西)
    • 如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}
    • table中的变量可以是函数,因此类似javascript可以进行oop编程

    ============================

    • 当函数的参数只有一个,并且为常量或是table时,可以将括号省略print "hello" f {x = 1, y = 2}
    • o.foo(a) 可以写为 o:foo(a)
    • Lua函数中的实参和形参数量可以不一致
    • lua的函数可以有多个返回值 如:s,e = string.find('aa bb cc', 'bb');
    • unpack函数,将数组拆成变量a,b = unpack({10,20})

    ============================

     


  • 相关阅读:
    [JLOI2011] 飞行路线
    高精度运算模板
    Dijkstra算法模板
    [SDOI2010] 外星千足虫
    [SDOI2006] 线性方程组
    [CTSC2014] 企鹅QQ
    模板三连击:树状数组+线段树+主席树
    [ZJOI2008] 树的统计
    [国家集训队] 礼物
    [洛谷P4720] [模板] 扩展卢卡斯
  • 原文地址:https://www.cnblogs.com/sslin/p/2833256.html
Copyright © 2020-2023  润新知