码迷,mamicode.com
首页 > 其他好文 > 详细

Lua:基本语法以及数据类型

时间:2020-09-17 17:51:16      阅读:29      评论:0      收藏:0      [点我收藏+]

标签:false   赋值   双引号   key   and   协同   double   goto   pair   

一、Print方法和注释

  • print():向控制台打印方法
  • -- 单行注释
  • --[[
    多行注释
    --]]

Tips:通过将  --[[   修改成   ---[[  快速将多行注释取消。

二、标识符命名规则及常用关键字

标识符命名规则:

  1. 不能以数字开头
  2. 不能是关键字
  3. 命名区分大小写
  4. 不建议“_大写字母”命名

Lua中常用关键字:and   break    do    else    elseif    end    false   for   function   goto   if   in    local   nil   not   or   repeat   return   then   true   until   while

三、变量

在默认情况下,变量总是认为是全局的。
Lua变量不需要声明,没有初始化的全局变量为nil。
通过给变量赋值为nil,删除变量。

四、数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。
Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

 

数据类型描述
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数
string 字符串由一对双引号或单引号来表示
function 由 C 或 Lua 编写的函数
userdata 表示任意存储在变量中的C数据结构
thread 表示执行的独立线路,用于执行协同程序
table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

五、nil(空)

nil 可以表示空值,还有一个"删除"作用
nil 作比较时应该加上双引号 ",如:

type(X)=="nil"

 六、boolean(布尔)

boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true。

七、number(数字)

Lua 默认只有一种 number 类型 -- double(双精度)类型(默认类型可以修改 luaconf.h 里的定义)

八、string (字符串)

1.字符串由一对双引号或单引号来表示。也可以用2个方括号 "[[]]" 来表示"多行"字符串。

如:

html = [[
<html>
<head></head>
<body>
<a href="http://www.runoob.com/">菜鸟教程</a>
</body>
</html>
]]
print(html)

2.字符串连接使用".."

3.在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字。
如:

print("2" + 6)
print("2" + "6")

都会输出8.0

print("error" + 1)

报错
4.使用 # 来计算字符串的长度,放在字符串前面。
如:

print(#"Hahaha")

输出6

九、table

Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。可以理解为C#中的字典。table 的创建是通过"构造表达式"来完成,最简单构造表达式是{}。
1、构造一个空表
如:

tbl1 = {}

2、初始化一个表

如:

tab1 = {key1 = 100,key2= "val2"}

3、print(表)输出表的地址

4、访问表中元素

第一种:.

如:

print(tab1.key1)

第二种:索引[]

如:

print(tab1["key1"])

5、使用默认索引构建表,初始索引为1。注意:初始索引为1,与其他语言不一样,不为0!!!此时不能用.来访问元素。

tbl = {"apple", "pear", "orange", "grape"}
print(tbl[2])

输出为pear

6、遍历table

for key, val in pairs(tbl) do
print(key..":"..val)
end

7、table不会固定长度大小

8、添加、删除table元素

删除如:

tab1["key1"] = nil
tab1.key1 = nil

添加如:

tab1["key5"] = "hahaha"
tab1.key5 = "hahaha"

注意:删除使用默认索引构建的表中的元素,不会改变其他元素的索引值。

十、function(函数)

1、在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以像变量一样赋值。

如:

function fact(n)
  if n==1 then
    return n;
  else
    return n*fact(n-1);
  end
end

print(fact(3))
fact2 = fact

print(fact2(3))

2、函数可以像C#中的委托一样使用。

如:

function testFun(tab,fun)
  for k,v in pairs(tab) do
  fun(k,v)
  end
end

tab = {key1 = "Val1",key2 = "Val2"}

function f1(k,v)
  print(k..":"..v)
end

testFun(tab,f1)

3、也可以像C#匿名方法和lambda表达式那样。

testFun(tab,function(k,v)
  print(k.."-"..v)
  end
)

 

本文参考:https://www.runoob.com/lua/lua-data-types.html

 

Lua:基本语法以及数据类型

标签:false   赋值   双引号   key   and   协同   double   goto   pair   

原文地址:https://www.cnblogs.com/craft0625/p/13629357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!