Lua

博客迁移

个人博客站点,欢迎访问,www.jiingfengji.tech

正文

两个连字符(–)在Lua中表示开始一条注释

Lua定义一个计算阶乘的函数:
–定义一个阶乘函数
function fact(n)
if n == 0 then
return 1
else
return n * fact(n-1)
end
end

–打印
print(“Hello World”)

–读取一个数字
a = io.read("*number")

Lua执行的 每段代码,例如一个源代码文件或在交互模式中输入的一行代码,都称为一个“程序块”,一个程序块也就是一连串的语句或命令。

几条连续的Lua语句之间并不需要分隔符,但也可以使用分号来分割语句。
代码中的换行不起任何作用
a = 1 b=a*2 --有点难看,但是合法

程序块可以是任意大小

语法规范

Lua的标识符可以是任意字母、数字和下画线构成的字符串,但不能以数字开头

Lua的保留字:
and break do else elseif
end false for function if
in local nil not or
repeat return then true unitl
while

Lua 是有大小写之分的

Lua注释:
可以在任何地方以两个连字符(–)开始一个“行注释”,该注释一直延伸到一行的结尾。
Lua也提供了“块注释”,以“–[[”开始,直至“–]]”,如果块注释包含的“–]]”并非是注释结尾,例如下面的例子

--[[
function fact(n)
	if n == 0 then
		return 1
	else
		return n * fact(n - 1)
	end
end
--]]
print("enter a number:")			--打印
a = io.read("*number")				--读取一个数字
print(fact(a))
--]]

如果代码中的第一个“–]]”并非是想要的块注释结尾,那么就改为以下依然合法

--[=[
function fact(n)
	if n == 0 then
		return 1
	else
		return n * fact(n - 1)
	end
end
--]]
print("enter a number:")			--打印
a = io.read("*number")				--读取一个数字
print(fact(a))
--]=]

Lua全局变量:
全局变量不需要声明。只需要将一个值赋予一个全局变量就可以创建了。在Lua中,访问一个未初始化的变量不会引发错误,访问结果是一个特殊的值nil。

print(a)		--nil
a=10
print(a)		--10

删除一个全局变量,只需要将其赋值为nil

Lua类型与值:
Lua是一种动态类型的语言。在语言中没有类型定义的语法,每个值都“携带”了它本身的类型信息。
在Lua中有8种基础类型:nil(空),boolean(布尔),number(数字),string(字符串),userdata(自定义类型),function(函数),thread(线程),table(表)。函数type可根据一个值返回其类型名称。

print(type("Hello world"))		--string
print(type(10.4 * 3))			--number
print(type(print))				--function
print(type(type))				--function
print(type(true))				--boolean
print(type(nil))				--nil
print(type(type(X)))			--string

最后一行将永远返回“string”,而无关乎X这个值的内容,这是因为type函数总是返回一个字符串。

变量没有预定义的类型,任何变量都可以包含任何类型的值:

print(type(a))			--nil
a = 10
print(type(a))			--number
a = "a string"
print(type(a))			--string
a = print
a(type(a))				--function

将一个变量用于不同类型,通常会导致代码混乱,但有时明智地使用这种特性会带来便利。

nil(空)

nil是一种类型,只有一个值nil,它的主要功能是用于区别其他任何值。一个全局变量在第一次赋值前的默认值就是nil,将nil赋予一个全局变量等同于删除它。Lua将nil用于表示一种无效值的情况,也就是没有任何有效值的情况。

boolean(布尔)

boolean类型有两个可选值:false和true,在Lua中任何值都可以表示一个条件。Lua将false和nil视为假,其他值全为真,Lua在条件测试中,将数字零和空字符串也都视为真

number(数字)

number类型用于表示双精度浮点数,支持科学计数法:0.3e12

string(字符串)

Lua中的字符串通常表示“一个字符序列”。可以将任意二进制数据存储到一个字符串中。Lua的字符串是不可变的值,不能直接修改字符串的某个字符,而是根据修改要求来创建一个新的字符串。

a="Hello world"
b=string.gsub(a,"world","lua")		--修改字符串的一部分
c=string.gsub(a,"o","c")
print(a)							--Hello world
print(b)							--Hello lua
print(c)							--Hellc wcrld

string的gsub函数修改所有匹配到的子串。
Lua的字符串和其他Lua对象一样,都是自动内存管理机制所管理的对象。以一对匹配的单引号或者双引号来界定字符串,根据编程风格,应该坚持在程序中使用相同类型的引号,如果字符串本身包含引号,那么使用转义序列

这里写图片描述
Lua字符串中的转义序列

还可以通过数值来指定字符串中的字符,数值以转义序列“<add>”给出,其中是一个至多3个十进制数字组成的序列。例如:
“alo\n123"”与字符串"\97lo\10\04923"是相同的,在ASCII中,'a’的ASCII编码是97,换行是10,'1’的编码是49.这里必须将49写成三个数字049,不然Lua会读取到数值492.

另外,可以用一对匹配的双方括号来界定一个字母字符串,就像写“块注释”那样,不过Lua不会解释其中的转义序列,并且会忽略第一个字符是换行字符的部分,这种写法对于书写那种含有程序代码的字符串尤为有用。

page=[[
<html>
<head>
<title>an html page</title>
</head>
<body>
<a href="http://www.lua.org">lua</a>
</body>
</html>]]
print(page)
print(type(page))					--string

Lua提供了运行时的数字与字符串的自动转换。在一个字符串上应用算术操作时,Lua会尝试将这个字符串转换成一个数字:

print("10" + 1)			--11
print("10+1")			--10+1
print("hello" + 1)		--报错,不能将string字符串转换成一个数字

在Lua期望一个字符串但却得到一个数字时,它也会将数字转换成字符串:

a=10 .. 20
print(10 .. 20)			--1020
print(a)				--1020
print(type(a))			--string

在Lua中,“…”是字符串连接操作符,记得该操作符与数字之间必须要用空格来分隔,不然Lua会将第一个点理解为一个小数点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值