• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua语法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua--点击关闭窗口中的子界面发布时间:2022-07-22
下一篇:
Lua笔记4发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap