Lua基础记录,附一个在线测试网址

Lua在线测试网址:

http://www.lua.org/cgi-bin/demo


Lua中文api手册:

http://manual.luaer.cn/--官方的,更权威,但是翻译不完全

http://www.codingnow.com/2000/download/lua_manual.html--翻译比官方稍微多一点点


数据类型

基本数据类型:

1.nil(空)类型
2.boolean(布尔)类型
3.number(数字)类型
4.string(字符串)类型
5.userdata(自定义类型)
6.function(函数)类型
7.thread(线程)类型
8.table(表)类型

可以使用type(x)获取类型


string的坑

字符串类型的连接符,只能连接字符串和数字类型,其他类型的,会直接报错。

local b = false
local n = 3555
local f = 1.2225
local s = 'test'
local empty = nil

io.write('Hello world '..b)--报错
io.write('Hello world '..n)--正常输出
io.write('Hello world '..f)--正常输出
io.write('Hello world '..s)--正常输出
io.write('Hello world '..empty)--报错
io.write('Hello world '..string.format('%s', b))--正常输出



boolean的坑

if判断时,只有false、nil会被认为是false

在用==进行比较的时候,只有false == false会被认为是true,准确说:做==比较时,不同类型都认为是false,同类型时才比较值是否相等

测试代码及结果:

local r = false
if r ~= 0 then 
   io.write("(false ~= 0) is true")
else 
   io.write("(false ~= 0) is false")
end
io.write("\n")

local r = false
if r == false then 
   io.write("(false == false) is true")
else 
   io.write("(false == false) is false")
end
io.write("\n")

local r = false
if r then 
   io.write("false is true")
else 
   io.write("false is false")
end
io.write("\n")

local r = 0
if r == false then 
   io.write("(0 == false) is true")
else 
   io.write("(0 == false) is false")
end
io.write("\n")

local r = 0
if r then 
   io.write("0 is true")
else 
   io.write("0 is false")
end
io.write("\n")

local r = 3
if r == false then 
   io.write("(3 == false) is true")
else 
   io.write("(3 == false) is false")
end
io.write("\n")

local r = 3
if r then 
   io.write("3 is true")
else 
   io.write("3 is false")
end
io.write("\n")

local r = nil
if r == false then 
   io.write("(nil == false) is true")
else 
   io.write("(nil == false) is false")
end
io.write("\n")

local r = nil
if r then 
   io.write("nil is true")
else 
   io.write("nil is false")
end

结果:

(false ~= 0) is true--不同类型比较,是false,取相反结果,就是true
(false == false) is true--同类型比较,正常结果
false is false--false,认为是false
(0 == false) is false--不同类型比较,false
0 is true--非nil和false,都认为是true
(3 == false) is false--不同类型比较,false
3 is true--非nil和false,都认为是true
(nil == false) is false--不同类型比较,false
nil is false--nil,认为是false






你可能感兴趣的:(Lua基础记录,附一个在线测试网址)