lua(一)基本语法及数据类型
lua -i或者lua进入lua控制台
[xuhaixing@localhost lua]$ lua -i
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
[xuhaixing@localhost lua]$ lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
>
2.打印输出
a. 控制台方式
> print("hello world")
hello world
>
b. 文件方式
[xuhaixing@localhost lua]$ lua helloWorld.lua
helloworld
c. ./执行
#!/usr/bin/lua
print("helloworld")
[xuhaixing@localhost lua]$ chmod u+x hello.lua
[xuhaixing@localhost lua]$ ./hello.lua
helloworld
3.注释
a.单行注释
#!/usr/bin/lua
print("helloworld")
--print("world good")
[xuhaixing@localhost lua]$ ./hello.lua
helloworld
b.多行注释
#!/usr/bin/lua
print("helloworld")
--print("world good")
--[[
print("嘻嘻哈哈")
print("你好")
--]]
没有声明的变量是全局变量,直接访问返回nil
print(b)
nil
b = ‘1’
print(b)
1
local a = 1
print(a)
nil
lua数据类型 8种
nil,boolean,number,string,userdata,function,thread,table
a. nil
print(type(a))
nil对于全局变量或者table, nil还有一个删除的作用
table2 = {key1=’a’,key2=’b’,key3=’c’}
for k, v in pairs(table2) do print(k..’—-‘..v) end
key1—-a
key3—-c
key2—-b
table2.key1=nil
for k, v in pairs(table2) do print(k..’—-‘..v) end
key3—-c
key2—-bnil做比较时,需要加上引号
print(type(a))
nil
print(type(a)==nil)
false
print(type(type(a)))
string
print(type(a)==’nil’)
true
b. boolean
lua把nil和false 当作false,其他都是真
> if false or nil then print('至少有一个是true') else print("false 和nill 都为false") end
false 和nill 都为false
> if 'a' then print('至少有一个是true') else print("false 和nill 都为false") end
至少有一个是true
c. number
双精度类型,lua种只有这一种数字类型
> print(type(2))
number
> print(type(2.0))
number
> print(type(2.0e+10))
number
d. string字符串
> print("aaa")
aaa
> print('aaa')
aaa
> print([[aaa]])
aaa
字符串做算术运算时,会尝试转换成数字
> print('1'+'3')
4
> print('1'+3)
4
> print('1'+'a')
stdin:1: attempt to perform arithmetic on a string value
stack traceback:
stdin:1: in main chunk
[C]: ?
字符串连接 ..
> print('1'..'2'..'a')
12a
e. table
table的下标从1开始
> table1 = {'a','b','c'}
> for k, v in pairs(table1) do print(k..'---'..v) end
1---a
2---b
3---c
可以通过\[\] 下标访问
> print(table1[1])
a
可以自己指定key
> table2 = {key1='a',key2='b',key3='c'}
> for k, v in pairs(table2) do print(k..'---'..v) end
key1---a
key3---c
key2---b
通过.下标访问
> print(table2.key1)
a
> print(table2[key1])
nil
funcation函数
function func1(n)
if n==0 then
return 1
else
return n * func1(n-1)
end
end
print(func1(3))
func2=func1
print(func2(4))
[xuhaixing@localhost lua]$ lua function.lua
6
24
[xuhaixing@localhost lua]$ cat function2.lua
function testFun(table,fun)
for k, v in pairs(tab) do
print(fun(k,v))
end
end
tab={key1="aaa",key2="bbb"};
testFun(tab,
function(k,v) --匿名函数
return k.."--"..v
end
)
[xuhaixing@localhost lua]$ lua function2.lua
key1--aaa
key2--bbb
实时内容请关注微信公众号,公众号与博客同时更新:程序员星星
还没有评论,来说两句吧...