当前位置: 首页 > 编程笔记 >

Lua学习笔记之数据类型

葛昱
2023-03-14
本文向大家介绍Lua学习笔记之数据类型,包括了Lua学习笔记之数据类型的使用技巧和注意事项,需要的朋友参考一下

从本篇博客开始研究一下Lua,现在的Lua真得是很火,因为Cocos2d-x写游戏的时候会用到,所以就拿过来学学吧,先从基础的语法开始,然后慢慢的深入。本人也是刚刚学习,希望和学习Lua的大家交流,博客权当笔记,有错误之处还请赐教。

当然首先是开发环境了,我的学习背景是Cocos2d-x,所以下载了最近发布的Cocos Code IDE版本,我们可以在Cocos Code IDE上边新建工程,然后写Lua测试代码,关于Cocos Code IDE的使用官方有不少的教程,这里就不说了。当然你也可以在控制台下写一些Lua命令,这种和命令行交互的方式比较适合简单的测试,需要做得工作是下载Lua,然后在控制台敲入Lua,在Mac下下载Lua只需要敲入命令brew install lua就搞定了,如果你没有安装brew,就先安装一下brew,最后如图所示代表你就成功了。

环境搭建好了以后就开始来接触一下这个脚本语言吧。首先是最基础的Lua类型,下面一一介绍。

--nil
--Lua中特殊的类型,他只有一个值:nil,一个全局变量没有被赋值以前默认值为nil,给全局变量负nil可以删除该变量。
print(i)
i = nil

--booleans
--两个取值false和true。但要注意Lua中所有的值都可以作为条件。在控制结构的条件中除了false和nil为假,
--其他值都为真。所以Lua认为0和空串都是真。

--numbers
--表示实数,Lua中没有整数。用实数代替整数不会有什么误差(除非数字大于100,000,000,000,000)。Lua的numbers可以处理任何长整数不用担心误差。

--strings
--字符串类型,Lua中字符串是不可以修改的,你可以创建一个新的变量存放你要的字符串
local a = "hello lua"
local b = string.gsub(a,"hello","hi")
print(a)
print(b)

--可以使用单引号或者双引号表示字符串
a = "a line"
b = 'another line'

--lua同样支持转义字符
--\a bell
--\b back space    -- 后退
--\f form feed    -- 换页
--\n newline     -- 换行
--\r carriage return   -- 回车
--\t horizontal tab   -- 制表
--\v vertical tab
--\\ backslash     -- "\"
--\" double quote    -- 双引号
--\' single quote    -- 单引号

--还可以使用[[...]]表示字符串。这种形式的字符串可以包含多行,也可以嵌套且不会解释转义序列,
--如果第一个字符是换行符会被自动忽略掉。
local code = [[

\b back space    -- 后退
\f form feed    -- 换页
\n newline     -- 换行
]]
print(code)

--运行时,Lua会自动在string和numbers之间自动进行类型转换,当一个字符串使用算术操作符时,
--string就会被转成数字。
print("10" + 1)    --> 11

--当Lua期望一个string而碰到数字时,会将数字转成string。..是字符串连接符,将字符串连接起来,当连接俩个数字
--的时候,注意数字后边要有空格
print(10 .. 20)  --> 1020

--如果需要显式将string转成数字可以使用函数tonumber(),如果string不是正确的数字该函数将返回nil。
--反之,可以调用tostring()将数字转成字符串,这种转换一直有效
print(1+tonumber(2)) -->3
print(tostring(100)) -->100

--function
--函数是第一类值(和其他变量相同),意味着函数可以存储在变量中,可以作为函数的参数,也可以作为函数的返回值。

--Userdata and Threads
--userdata就是用户数据类型,指的是自己定义的类型,userdata在Lua中除了赋值和相等比较外没有预定义的操作
--thread代表线程

--table表 比较重要 以上三个数据类型在其他博客说明

--变量的作用域
--全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,
--只不过得到的结果是:nil.
print(i) -->nil
--声明一个局部变量使用local 局部变量只在局部代码块中有效,比如在循环中,if语句中,do end代码块中
--我们应该尽可能的使用局部变量
local j = 1
do
 local k = 1
end
print(k) -->nil

--标示符
--字母(letter)或者下划线开头的字母、下划线、数字序列.最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。

--注意:Lua是大小写敏感的.
--注释:单行注释:--
--多行注释:--[[ --]]
 类似资料:
  • 本文向大家介绍JavaScript 学习笔记之数据类型,包括了JavaScript 学习笔记之数据类型的使用技巧和注意事项,需要的朋友参考一下 一、分类 基本数据类型:undefined、null、string、Boolean、number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) 来定义 二、详解 1、undefined:undefin

  • 本文向大家介绍Lua学习笔记之表和函数,包括了Lua学习笔记之表和函数的使用技巧和注意事项,需要的朋友参考一下 Lua中的表和函数比较重要,正是因为二者的结合才完成了很多很多的功能,Lua才变得如此的强大,所以有必要仔细的学习一下表和函数。如下的代码体现了表的用法。 接下来学习Lua函数的用法,函数涉及的东西比较多,不着急,慢慢来。

  • 本文向大家介绍Lua入门学习笔记,包括了Lua入门学习笔记的使用技巧和注意事项,需要的朋友参考一下 最近在使用Cocos2d-x + Lua来开发游戏。 游戏的主要逻辑将在Lua里写,之前没有接触过Lua,以下是我总结的入门笔记。 运算符 逻辑运算符 与:and 或:or 非:not 逻辑判断只有在false和nil时为假,其余均为真。 or和and会返回第一个断路的值。 Lua中没有C语言的三元

  • 本文向大家介绍Python数据类型学习笔记,包括了Python数据类型学习笔记的使用技巧和注意事项,需要的朋友参考一下 带你走进数据类型 一:整数、浮点数 Python中整数和浮点数的定义以及运算和C++都是一样的,我在这里就不需多说了,我就说明一点:Python相对于C/C++而言,定义整数没有int 和 long long 这些区分的,直接赋值即可。这就体现出了Python简洁的功能。 二:布

  • 本文向大家介绍mysql学习笔记之数据引擎,包括了mysql学习笔记之数据引擎的使用技巧和注意事项,需要的朋友参考一下 查看当前数据库支持的引擎 或者 Engine 引擎的名称 Support 是否支付YES表示支持,NO表示不支持 Comment 评价或者备注 Defalut表示,默认支持的引擎 Transactions 是否支持事务,YES表示支持,NO表示不支持 XA 所有支持的分布式是否符

  • 本文向大家介绍Lua基础教程之表(Table)学习笔记,包括了Lua基础教程之表(Table)学习笔记的使用技巧和注意事项,需要的朋友参考一下 表 定义表(Table)的方式:a = {}, b = {…} 访问表的成员:通过“.”或者“[]”运算符来访问表的成员。注意:表达式a.b等价于a[“b”],但不等价于a[b] 表项的键和值:任何类型的变量,除了nil,都可以做为表项的键。从简单的数值、