Lua学习之类型与值
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学习之类型与值的更多相关文章
- lua学习之类型与值篇
类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 type 可以返回这个值的类型的名称 将一个变量用于不同类型,通常会导致混乱的代码 但合理 ...
- Lua中的类型与值
[基础介绍] Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8中基本类型,分别是: nil(空)类型 boolean(布尔)类型 number(数字 ...
- Lua 学习笔记(二)语法、类型、值
首先Lua执行的每一段代码都称之为“程序块”,一个程序块也就是一连串的语句或命令,例如一个源码文件或一行代码.Lua语句之间并不需要分隔符,如代码中的换行就不起任何作用,当然为了养成编码习惯当两条或者 ...
- lua学习之table类型
关系表类型,这是一个很强大的类型.我们可以把这个类型看作是一个数组.只是 C语言的数组,只能用正整数来作索引: 在Lua中,你可以用任意类型的值来作数组的索引,但这个值不能是 nil.同样,在C语言中 ...
- php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常
以前用Windows Live Writer写日志都好好的,前几天用写完日志,点击发布,突然弹出意外错误:“WindowsLive.Writer.CoreServices.HttpRequestHel ...
- 《JS权威指南学习总结--第三章类型、值和变量》
第三章 类型.值和变量 内容要点 一.数据类型 1.在编程语言中,能够表示并操作的值的类型称做数据类型 2.JS的数据类型分为两类: 原始类型:数字.字符串和布尔值 对象类型 3.JS中有两个特殊的原 ...
- Lua学习笔记一
学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章 开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...
- lua学习项目笔记
这几天草草的浏览了一下电子版的<lua程序设计>,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进.推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉.推进CAP ...
- [转]LUA 学习笔记
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...
随机推荐
- 解决Mac开机变慢 command +option + P + R
Mac开机变慢怎么办? command +option + P + R 重点是 开机 后 一直按 该4个键不放 听到3声音响 屏幕出现灰暗灰暗几次 开机速度 5s 重置PRAM和NVRAM的方法都是 ...
- C# 网络编程小计 20150202
在学习网络Socket编程之前必须得学会多线程编程,这个是经常会用的到 可参考:http://www.cnblogs.com/GIS_zhou/articles/1839248.html System ...
- js对页面对float类型的数据格式化处理
<script> document.write(parseFloat(<s:property value="assureterm"/>)); ...
- 6:django 通用视图
上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言, ...
- HDU 3669 Cross the Wall(斜率DP+预处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3669 题目大意:有n(n<=50000)个矩形,每个矩形都有高和宽,你可以在墙上最多挖k个洞使得 ...
- [你必须知道的.NET]第二十五回:认识元数据和IL(中)
发布日期:2009.02.25 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 书接上回[第二十四回:认识元数据和IL(上)], ...
- 【JBPM4】流程分支fork - join
流程分支.聚合.流程每个分支节点都全部处理完成后,聚合到下一个节点. JPDL <?xml version="1.0" encoding="UTF-8"? ...
- AC日记——[POI2014]KUR-Couriers 洛谷 P3567
[POI2014]KUR-Couriers 思路: 卡空间,sb题: 代码: #include <bits/stdc++.h> using namespace std; #define m ...
- ubuntu16.04下安装docker
原文地址:传送门 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是 ...
- 03 java 基础:注释 关键字 标识符 JShell
Java 10 中已有 Jshell 工具,方便用户在其中直接输入相关 java 代码. 注释:java 中分为单行注释 // 多行注释 /* */ 文档注释 /** */ 关键字:在 ...