Lua语法

2019/05/28 11:29
阅读数 15

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 变量中调用。
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部