LUA语法笔记

lua 是 个小巧的脚本语言,但缺乏强大的库的支持,一般配合C/C++等宿主语言,不单独使用。
一 环境
    下载安装后,将lua主目录添加入环境变量比如LUA_HOME = f:\Program Files (x86)\Lua\5.1,启动控制台,输入lua,能进入lua控制台.
第一个lua脚本,  新建一个文本文件,输入print("hello world")     然后保存为hello.lua,  进入入控制台输入lua hello.lua. 即可看到hello world 表示执行成功。
要退出可以通过执行os.exit()来退出lua

二  语句块
     一个lua脚步文件或控制台模式下每一行都是一个块。lua可以执行一系列的块,用参数-l  , 例如有a,b两个文件链接到一起执行,lua -la -lb;  参数-i
是进入命令行模式。另一种链接方式是使用dofile函数, 例如dofile("a.lua")

三  语法知识
     注意事项:lua是大小写敏感的,单行注释--,  多行注释--[[ --]]
     基本数据类型:nil  boolean  number string  userdata  function  thread  table。  type函数可以取得变量或值的类型。
    nil :相对于空。
    boolean: 值为true或false,值得一提的是lua的控制结构除了false和nil以外,其它都为真,包括0和空串。
    string:是不可修改的。lua可以高效处理长字符串,1M以上的字符串很常见,可以使用单引号或双引号来表示string  '\'为转义字符,还可以用\ddd来表示字符;除此之外还可用[[]]来表示字符串,这种情况下可以包含多行,可以嵌套但不会解释转义序列,如果第一个字符数换行符会被自动忽略掉。lua会自动在string和number之间转换,例如print("10"+1)   输出11, print("hello"+1)   错误,  可以使用io,read()来读取数据
    fuction: 函数也是一类数据,这意味着函数可以储存在变量中,可以作为别的函数的参数,也可作为返回值。
    userdata: 可以把C的数据存储在变量中,userdata在lua中只定义了赋值和比较的操作;用于描述应用程序或者使用C实现的库创造的类型。例如用标准I/O来描述文件。
   table: 表的构造器是{}, 类似数组初始化,例如day = {"sunday","monday","tuesday","wenesday","thursday","friday","saturday"},引用类似数组,print(day[1])  输出monday, 表可以用任何表达式初始化,可以带下标指定day={[0]="sunday",[1]="monday",[2]="tuesday",[3]="wenesday",[4]="thursday",[5]="friday",[6]="saturday"},  也可以类似这样a = {x=0, y=1,z=3}
    表达式: 二元运算符+-*/   一元运算符 -   关系运算符 <  >  >=  <=  == ~=,   比较对象时,同一个对象==为true ~=为false;     逻辑运算符:  and   or   not    连接运输符  ..
   局部变量  :  local 变量名
   语句: if语句  if  条件  then  执行体  end       if  条件  then  执行体1 else 执行体2  end      if  条件  then  执行体1 elseif  条件2  then  执行体2 elseif ... else ... end
              while语句   while  条件  do    ....   end
              repeat-util语句    repeat .....  util 条件
              for 变量=表达式1,表达式2,表达式3  do  ....  end
四: 函数    
        基本结构为  function  函数名 (参数表)
                               函数体
                            end
       LUA的函数可以返回多个值,例如s,  e  = string.find ("hello lua users","lua")
       可变参数:LUA将参数放在一个叫arg的表中,arg表中还有一个域n表示参数个数   例如  fucntion a (x, y ...) end     f(3,4,5,6)   arg={5,6,n=2}
五: 编译
          动态编译:dofile  dostring loadfile   loadstring  它们分别从文件和字符串加载其中的语句块
             例如:  从字符串生成函数对象,func = loadstring("local n=1 n=n+5 return n")     print(func()) 结果6
             require 与dofile功能相同,不同点是require会搜索目录加载文件,require会防止加载重复文件, 
六:C包
      
     

               

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值