Lua是一种动态语言,在语言中没有类型定义的语法。

在lua中有8中基本的类型:

1.nil(空)

2.boolean

3.number(数字)

4.string(字符串)

5.userdata(自定义类型)

6.function(函数)

7.thread(线程)

8.table(表)

函数type可根据一个值返回类型的名称。

print(type("Hello world")) ------------->string

由于变量是没有预定义类型的,所以

a = ;

print(type(a)); --------------------->number

a = print;        ------------------------>注意这个是合法的

print(type(a)); ----------------------->function

这里我们重点来看下string类型

Lua的字符串是不可变的值,如果修改只能创建一个新的字符串:

a = "one";
b = string.gsub(a,"one","two");
print(a);-------------->one
print(b);-------------->two

Lua的字符串和其他Lua对象一样,都是采用自动内存管理机制所管理的对象。

另外还可以用一对匹配的双方括号来界定一个字母字符串,这样就可以延伸多行,但Lua不会解释其中的转义字符。

如:

page = [[
<html>
<head>
</head>
</html>
]]
write(page);

Lua提供了运行时数字和字符串自动转换。

print(""+); ------------------>21
print("Hello"+);---------------->错误

相反,Lua也可以将字符串转换成一个数字

print(10 .. );------------------>1020

在Lua中 .. 表示字符串连接操作符。

接着我们来看看table类型

a = {};------------------->创建一个table,并引用到变量a中

for i=1,1000 do a[i] = i * 2 end;

print(a[9];) -------------------->18

print(a["x"]);-------------------->nil

我们还可以将a["x"]写成a.x,但是注意a.x与a["x"]的区别。

长度操作符“#”用于返回一个数组或者线性表的最后一个索引,我们可以用他来干很多有意义的事情

遍历table:

for i=1,#a do

  print(a[i]);

end

删除最后一个元素:

a[#a] = nil;

末尾添加元素:

a[#a+1] = v;

当一个数组中间有空隙也就是说有元素是nil,那么#就认为这个空元素是数组结束的标志。

如果真的需要处理那些有空隙的数组,那么就需要用到函数table.maxn,它将放回数组的最大索引的元素。

a = {};

a[10000]  = 1;

print(table.maxn(a)); ---------------->10000

接下来我们来看下Lua里面的function函数

lua语言中的函数可以存储在变量中,可以通过参数来传递给其他函数,好可以作为其他函数的返回值。

Lua既可以调用自身的函数,也可以调用c语言的函数。

userdata和thread

userdata用于表示一种由应用程序或者c语言库所创建的新类型。

Lua学习之类型与值的更多相关文章

  1. lua学习之类型与值篇

    类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 type 可以返回这个值的类型的名称 将一个变量用于不同类型,通常会导致混乱的代码 但合理 ...

  2. Lua中的类型与值

    [基础介绍] Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8中基本类型,分别是: nil(空)类型 boolean(布尔)类型 number(数字 ...

  3. Lua 学习笔记(二)语法、类型、值

    首先Lua执行的每一段代码都称之为“程序块”,一个程序块也就是一连串的语句或命令,例如一个源码文件或一行代码.Lua语句之间并不需要分隔符,如代码中的换行就不起任何作用,当然为了养成编码习惯当两条或者 ...

  4. lua学习之table类型

    关系表类型,这是一个很强大的类型.我们可以把这个类型看作是一个数组.只是 C语言的数组,只能用正整数来作索引: 在Lua中,你可以用任意类型的值来作数组的索引,但这个值不能是 nil.同样,在C语言中 ...

  5. php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常

    以前用Windows Live Writer写日志都好好的,前几天用写完日志,点击发布,突然弹出意外错误:“WindowsLive.Writer.CoreServices.HttpRequestHel ...

  6. 《JS权威指南学习总结--第三章类型、值和变量》

    第三章 类型.值和变量 内容要点 一.数据类型 1.在编程语言中,能够表示并操作的值的类型称做数据类型 2.JS的数据类型分为两类: 原始类型:数字.字符串和布尔值 对象类型 3.JS中有两个特殊的原 ...

  7. Lua学习笔记一

    学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章  开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...

  8. lua学习项目笔记

    这几天草草的浏览了一下电子版的<lua程序设计>,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进.推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉.推进CAP ...

  9. [转]LUA 学习笔记

    Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...

随机推荐

  1. 【Spring事务的事务属性】

    大家都知道,Spring的声明式事务是通过事务属性来定义的,而spring的事务属性包含了5个方面:传播行为,隔离级别,是否只读,事务超时,回滚规则: 传播行为 传播行为,是属于事务边界相关的属性,定 ...

  2. windows server 2012 IIS配置之FTP站点

    原文地址:[原创]winserver2012IIS配置之FTP站点作者:hkmysterious   一.实验拓扑: 使server2012客户计算机通过ftp方式从FTP服务器上下载已上传并共享的文 ...

  3. Spring + MyBatis 多数据源实现

    近期,在项目中需要做分库,但是因为某些原因,没有采用开源的分库插件,而是采用了同事之前弄得多数据源形式实现的分库.对于多数据源,本人在实际项目也中遇到的不多,之前的项目大多是服务化,以RPC的形式获得 ...

  4. 事务管理配置与@Transactional注解使用

    spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framewor ...

  5. 寻找与网页内容相关的图片(二)reddit的做法

    正如前文所述,内容聚合网站,比如新浪微博.推特.facebook等网站对于网页的缩略图是刚需.为了让分享的内容引人入胜,网页的图片缩略图是必不可少的.年轻人的聚集地.社交新闻网站reddit也是一个这 ...

  6. 【JBPM4】任务节点-任务分配candidate-groups

    此分组的意思是,该任务节点为多个人员,当其中之一完成后,流程就进入下一个节点. JPDL <?xml version="1.0" encoding="UTF-8&q ...

  7. python webpy 框架环境架设

    前几年使用过 webpy做个些小东西,今天有个东西从拾webpy.但是基本上都忘记了,还是那句古话“好记性不如烂笔头”.这里把相应的步骤梳理下. 前提: 操作系统 windows 一.webpy 方面 ...

  8. AC日记——小魔女帕琪 洛谷 P3802

    小魔女帕琪 思路: 概率公式计算: 代码: #include <bits/stdc++.h> using namespace std; ],sig; int main() { ;i< ...

  9. Mysql数据库表的类型有哪些

    截至目前,MySQL一共向用户提供了包括DBD.HEAP.ISAM.MERGE.MyIASM.InnoDB以及Gemeni这7种Mysql表类型.其中DBD.InnoDB属于事务安全类表,而其他属于事 ...

  10. 《深入理解Android2》读书笔记(四)

    接上篇<深入理解Android2>读书笔记(三) ActivityManagerService(AMS) 1.AMS由ActivityManagerNative(AMN)类派生,并实现Wa ...