lua学习笔记01

 


这是笔者学习《Lua中文教程》所写的笔记,So,笔记中的例子在《Lua中文教程》中都能找到。

我安装的是LuaForWindows,用的IDE是其自带的SciTE

1.HelloWorld

哈哈。HellWorld,从CJava再到C++第一个例子都是HelloWorld,今天照样用HelloWorld的例子打开Lua的大门。

你只要在SciTE中新建一个文件,保存文件到自己需要的目录输入一行代码:

Print(“Hello World”)--这里加不加’;’都可以

这样就可以保存了。OK,点击运行。

如果,不用IDE运行,在cmd中运行也是可以的,找到你的文件目录 prompt lua xxx.lua

OK了。

2.输出一个数的阶乘

指定一个数,输出这个数的阶乘。

这就是一个简单的递归。

 

-- defindes a factorial function
function fact (n)
	if n == 0 then
		return 1
	else
		print(n)
		return n * fact(n - 1)
	end
end

print("enter a number:")
a = io.read("*number") --read a number
print(fact(a))

3.全局变量:全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的变量也不会出错,只不过得到的结果是:nil。代码:test3.lua

如果你想删除一个变量,那么,需要赋值为nil,这样这个变量就好像没有使用过一样。换句话说,当且仅当一个变量不为nil时,这个变量存在

print(b)
b = 10
print(b)
b = nil
print(b)


 

4.词法约定:标识符最好不要使用下划线加大写字母,因为,lua的保留字也是这样的。

保留字啥的就不说了,看了看应该没有重名的可能性。

注意:Lua是大小写敏感的。

注释:单行注释--

          多行注释--[[   ]]--

 

类型和值

 

Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型分别为:nil,boolean,number,string,userdata,function,threadtable。函数type可以测试给定变量或者值的类型。

print(type("Hello world"))
print(type(10.4 * 3))
print(type(print))
print(type(type))
print(type(true))
print(type(nil))
print(type(type(x)))
print(type(a))
a = 10
print(type(a))
a = "a string"
print(type(a))
a = print                       --还能这么用,感觉好酷啊
a(type(a))

Nil:

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

Boolean

Truefalse

Numbers:

表示实数,Lua中没有整数。

Strings:

指字符串的序列,Lua8位字节,所以,字符串可以包含任何数值字符,包括嵌入的0。这意味着你可以存储任意的二进制数据在一个字符串中。Lua中的字符串是不可以被修改的,你可以创建一个新的变量存放你要的字符串。

a = "one string"
b = string.gsub(a,"one","another")
print(a)
print(b)

c = "aaaabbbbcccddddeeeefffeeee"
d = string.gsub(c,"e","g")
e = string.gsub(c,"aa","A")
f = string.gsub(c,"aaa","K")
g = "--太神奇了!!!"
print(c)
print(d)
print(e)
print(f)
print(g

Lua中的字符串可以使用双引号或者单引号表示,最好使用其中的一种。String可以是一个字母也可以是一本书,Lua可以高效的处理字符串。1M的字符串在Lua中是很常见的。

运行时Lua会自动在stringnumbers之间自动转换,当一个字符串使用算数操作符是,string就会被转成数字。..Lua中的字符串连接符,当在一个数字后面写时,必须加上空格以防止被解释错。

print("10" + 1)
print("10 + 1")
--print("-5.3e - 10" * "2")--Error
--print("hello" + 1)--Error
print(10 .. 20)

管字符串和数字可以相互转化,但两者是不同的,像10 == “10”这样的比较永远是错的。如果需要显示的将string转成数字可以用函数tonumber(),如果string不是正确的数字,该函数将返回niltostring()函数可以将数字转成字符串。

line = io.read()
n = tonumber(line)
if n == nil then
	error(line .. " is not a valid number")
else
	print(n * 2)
end

a = 10
b = tostring(a)
--c = toboolean(a)
print(type(b))

Functions

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

Userdata and Threads

Userdata可以将C数据存放在Lua变量中,userdataLua中除了赋值和相等比较外没有预定义的操作。Userdata用来描述应用程序或者使用C实现的库创建的新类型。




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值