zoukankan      html  css  js  c++  java
  • Lua语法


    1.注释:
    --:单行注释
    --[[ --]]: 多行注释
    2.命名规则:
    区分大小写
      Lua标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。
    最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
    保留字:lua为一些关键词添加一些功能,一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
      Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoob 与 runoob 是两个不同的标示符。以下列出了一些正确的标示符:
    变量:默认为全局变量
      全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。
    如果你想删除一个全局变量,只需要将变量赋值为nil。
    3.数据类型
      nil:空类型,表示一个无效值(在条件表达式中相当于false)
      boolean:包含两个值:false和true。
      number:表示双精度类型的实浮点数,包括整数和小数
      string:字符串,字符串由一对双引号或单引号来表示,也可以用 2 个方括号 "[[]]" 来表示"一块"字符串。
      function:函数类型
      userdata:用户数据类型(表示任意存储在变量中的C数据结构)
      thread:可当做线程来用(表示执行的独立线路,用于执行协同程序)
      table:Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。(class使用table来实现的)
    1.nil:
      nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值:
    对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉,
    2.boolean:
      boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是"假",其他的都为"真":
    3.string:
      字符串的组拼用“..“,”+“一般用于加法运算

      使用 # 来计算字符串的长度,放在字符串前面(长度是按照字节来计算的)
    4.Lua中的方法不定义返回值类型,可以根据自己的需求进行返回,函数的参数是不指定类型的
    注:不限制类型容易写错(约定大于限制)
    关于function函数的作为参数传递和匿名函数的用法:
      函数也是可以当成数据来进行传递的,相当于C#中的委托与事件
    --函数也可以作为数据赋值
    --函数作为一个参数进行传递
    --函数可以返回多个值
    function testFunc(tab,fun)
       for k,v in pairs(tab) do
          fun(k,v);
       end
    end
    tab1 = {key1= "val1",key2 = "val2"};
    function f1(k,v)
       print(k..":"..v);
    end
    testFunc(tab1,f1);
    --当这个函数只需要使用一次,其他地方是不需要使用的,使用匿名函数
    testFunc(tab1,function(k,v)
       print(k.."-"..v);
    end
    );
    --函数可以返回多个值:
    function test()
      return 10,20;
    end
    --接收的时候可以接收一个,也可以接收两个
    a = test();
    a,b = test();
    函数中可以传递可变参数(个数)
    function test(...)
      local arg ={...}--可以避免最后一个值是参数个数的问题
      --#arg可以取得arg里面的个数
       print(arg[1])--arg会把传递过来的参数生成一个Tabel表(arg最后一个值会保存参数的个数)
    end
    

      


    thread(线程)
      在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
    线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
    userdata(自定义类型)
      userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。
  • 相关阅读:
    关于DB2 ORACLE MYSQL 数据库 where字句执行顺序问题
    关于图片上传的一些问题
    集合、迭代器的一些总结
    关于使用Echart记录
    DB2序列的使用
    (转载)判断浏览器类型是否IE及版本问题
    SQL中 IS NULL 和IS NOT NULL
    JS 中substr 和 substring
    (转载)身份证验证
    Echars 自适应浏览器大小
  • 原文地址:https://www.cnblogs.com/xingyunge/p/10936174.html
Copyright © 2011-2022 走看看