lua(一)基本语法及数据类型

1.  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("你好")
--]]

4. 没有声明的变量是全局变量,直接访问返回nil

> 
> print(b)
nil
> b = '1'
> print(b)
1
> local a = 1
> print(a)
nil
> 

 

5. 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---b

   nil做比较时,需要加上引号    

> 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

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值