Lua学习笔记

Lua基础语法

1.初识Lua

​ Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网: https://www.lua.org/

在Linux虚拟机的任意目录下,新建一个hello.lua

# 创建文件
touch hello.lua
# 编辑文件
vi hello.lua
# 在文件添加如下内容
print("Hello World!")
#按ESC 输入下面命令退出保存
:wq
# 不保存
:q
# 强制退出
:q!

2.变量和循环

2.1变量
#数据类型

nil   # 只有值nil属于该类,表示无效值(在条件表达式中相当于false)
boolean #包含两个值:false 和 true
number #表示双精度类型的实浮点数
string # 字符串由一对双引号或者单引号表示
function # 由C或Lua编写的函数
table  # Lua中的表(table) 其实是一个"关联数组" (associative arrays) ,数组的索引可以是数字、字符串或表类型。在Lua 里,atable的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
 
# 可以利用type函数测试给定变量或者值的类型
print(type("Hello World!"))
# string
print(type(print))
# function

#变量
Lua声明变量的时候,并不需要指定数据类型
-- 声明字符串
local str ='hello';
--声明数字
local num =21
-- 声明布尔类型
local flag = true
--声明数组 key为索引的 table
local arr = {'java','python','lua'}
-- 声明table,类似java的map
local map = {name = 'jack',age=21}
-- 声明 字符拼接
local str = 'hello' .. 'world'  print(str) = helloworld

访问table:
-- 访问数组,lua数组的角标是从1开始
print(arr[1])
-- 访问table
print(map['name'])
print(map.name)
2.2循环

数组、table都可以利用for循环来遍历

遍历数组

-- 声明数组key为索引的table
local arr = {'java','python','lua'}
-- 遍历数组
for index,value in ipairs(arr) do
    print(index,value)
end

遍历table

-- 声明map,也就是table
local map = {name='jack',age=21}
-- 遍历table
for key, value in pairs(map) do
	print(key, value)
end	

-- 运行lua文件
lua hello.lua

3.条件控制、函数

3.1函数

定义函数的语法

function 函数名(argument1,argument2...,argumentn)
    -- 函数体
    return 返回值
end    

例子:定义一个函数,来打印数组

function printArr(arr)
	for index, value in ipairs(arr) do
		print(value)
	end
end

-- 调用printArr函数
printArr(arr)
3.2条件控制

类似Java的条件控制,例如:if、else语法:

if(布尔表达式)
then
	--[布尔表达式为 true 时执行该语句块]
else
	--[布尔表达式为 false 时执行该语句块]
end	

与java不同,布尔表达式中的逻辑运算是基于英文单词:

and
逻辑与操作符。若A为false, 则返回A,否则返回B。
or
逻辑或操作符。若A为true, 则返回A, 否则返回B。
not
逻辑非操作符。与逻辑运算结果相反,如果条件为true, 逻辑非为false。

题目练习:

需求:自定义一个函数,可以打印table, 当参数为nil时,打印错误信息

-- 定义一个数组变量(table)
local arr = {'java','python','lua'}
local arr2 = {'java','python','lua','C'}
-- 编写函数
local function printArr(arr)
	if(not arr) then
		print('数组不能为空')
        return nil
    end
	for key, value in ipairs(arr) do
		print(value)
	end
end

-- 调用函数
printArr(arr)
printArr(arr2)
printArr(nil)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值