【Lua】 Lua学习笔记(一)

文章目录

  • 一、前言
  • 二、Lua 与热更新
  • 三、Lua 环境安装
  • 四、Lua 保留关键词
  • 五、Lua 八个基本类型
    • (1) nil
      • [1]没有任何有效值
      • [2]对全局变量与 table 起到删除作用
      • [3] 值与 nil 比较
    • (2) boolean
    • (3) number
    • (4) string
      • [1] ' ' 与 " "都可表示为字符串
      • [2] [[]] 表示字符串块
      • [3] 对数字字符串使用算术操作会将该字符串转换为数字
      • [4] #可用来计算字符串长度
      • [5] 字符串连接使用`..`
    • (5) table
      • [1] Lua 中的表是通过构造表达式进行创建的,可以直接使用 `{}` 构造空表,也可以直接在 `{}` 中写入值,不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 `1 ` 开始。。
      • [2] Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。
      • [3] table 不会固定长度大小,有新数据添加时,table 的长度会正常,没有初始化的table 值为nil 。
    • (6) function
      • [1] 函数可以被存储在变量中。
      • [2] `function 可以以匿名函数(anonymous function)的方式通过参数传递`
    • (7) thread
    • (8) userdata

一、前言

哈喽大家好,我是 FEZ98 ,好久没与大家见面了。之前计划好了每周写一篇文章进行记录每周的学习成果,结果计划赶不上变化(其实是懒)。好了废话少说,这个系列是我系统学习Lua语言的学习笔记,我会把遇到的一些比较值得记录与关注的知识写在里面,供自己以后进行回顾。

二、Lua 与热更新

至于为什么要使用热更新与 Lua 框架的使用,因为有大佬博客写得比较详细了,我这里就直接给出文章链接地址了,强烈推荐大家读一下。

链接

三、Lua 环境安装

Window 系统上安装 Lua,可以使用一个叫 “SciTE” 的 IDE 环境来执行 lua 程序,下载地址为:

Github 下载地址

之后一直点击下一步进行没有什么值得特别注意的地方。

安装完之后,我们打开 SciTE ,输入以下代码并进行保存操作。
【Lua】 Lua学习笔记(一)_第1张图片

此时会发现无法进行程序的编译,这是因为我们保存的文件名后缀没有进行修改,需要将其改为.lua
【Lua】 Lua学习笔记(一)_第2张图片
修改后,如下图
在这里插入图片描述
重新打开 SciTE ,这时就可正常使用啦。
【Lua】 Lua学习笔记(一)_第3张图片
运行结果:
【Lua】 Lua学习笔记(一)_第4张图片

四、Lua 保留关键词

【Lua】 Lua学习笔记(一)_第5张图片

五、Lua 八个基本类型

Lua 是动态类型语言,变量不需要定义类型,只需要为变量赋值。
【Lua】 Lua学习笔记(一)_第6张图片

(1) nil

[1]没有任何有效值

按照我目前的理解, nil 类型或许相当于 C# 或者 Java 中的 null。
当一个变量未赋值时,打印该变量的类型会输出 nil :
【Lua】 Lua学习笔记(一)_第7张图片

[2]对全局变量与 table 起到删除作用

全局变量:
【Lua】 Lua学习笔记(一)_第8张图片

table:
未对 table 的 key 进行 nil 赋值
【Lua】 Lua学习笔记(一)_第9张图片
使用nil进行删除操作:
【Lua】 Lua学习笔记(一)_第10张图片

[3] 值与 nil 比较

【Lua】 Lua学习笔记(一)_第11张图片
当使用 type 函数时,因为返回值为 string 类型,所以 nil 必须加上双引号:
【Lua】 Lua学习笔记(一)_第12张图片

(2) boolean

在 Lua 中, nil 与 false 为 false ,其他的都为 true ,包括0。
【Lua】 Lua学习笔记(一)_第13张图片

(3) number

Lua 中只有一种number类型,那就是double(双精度)类型。
【Lua】 Lua学习笔记(一)_第14张图片

(4) string

[1] ’ ’ 与 " "都可表示为字符串

【Lua】 Lua学习笔记(一)_第15张图片

[2] [[]] 表示字符串块

【Lua】 Lua学习笔记(一)_第16张图片

[3] 对数字字符串使用算术操作会将该字符串转换为数字

【Lua】 Lua学习笔记(一)_第17张图片

[4] #可用来计算字符串长度

【Lua】 Lua学习笔记(一)_第18张图片

[5] 字符串连接使用..

【Lua】 Lua学习笔记(一)_第19张图片

(5) table

[1] Lua 中的表是通过构造表达式进行创建的,可以直接使用 {} 构造空表,也可以直接在 {} 中写入值,不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。。

【Lua】 Lua学习笔记(一)_第20张图片

[2] Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。

【Lua】 Lua学习笔记(一)_第21张图片

这里我注意到 table 的输出顺序不是严格按照加入表中的顺序,以下贴出一篇博客解释了相关问题:
链接

[3] table 不会固定长度大小,有新数据添加时,table 的长度会正常,没有初始化的table 值为nil 。

【Lua】 Lua学习笔记(一)_第22张图片

(6) function

[1] 函数可以被存储在变量中。

【Lua】 Lua学习笔记(一)_第23张图片

[2] function 可以以匿名函数(anonymous function)的方式通过参数传递

【Lua】 Lua学习笔记(一)_第24张图片

(7) thread

在 Lua 中,最主要的线程是协同程序 (coroutine) 。 它跟线程 (thread) 差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他的协同程序共享全局变量和其他大部分东西。

线程与协程的区别:线程可以同时运行多个,协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起 (suspend) 时才会暂停。

(8) userdata

userdata 是一种用户自定义数据,用于表示一种由应用程序或者 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。

你可能感兴趣的:(Lua,lua,学习,笔记)