Lua 语言特性

Lua 语言特性 :

nil(空值 相当于其他语言的null)

  • nil 类型表示一种没有任何有效值 , 例如打印一个没有赋值的变量,便会输出一个 nil 值 .
  • nil 做判断时会被认定为 false .
> print(type(a))
nil
>
  • nil 还有一个”删除”作用,给变量赋值 nil ,等同于把它们删掉 .
> print(a)
nil

> a = 10
> print(a)
10

> a = nil
> print(a)
nil
>

string(字符串)

  • 字符串由一对双引号或单引号来表示 .
str1 = "this is string"
str2 = 'this is string'
  • 也可以用 2 个方括号 “[[]]” 来表示”一块”字符串 .
strblock = [[
this is string block
try 
]]
print(strblock)
  • 对数字字符串进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字 ( 这一点和JavaScript很类似 )
> print("2" + 6)
8
> print("1" + "5")
6
  • 使用 .. 来拼接字符串 .
> print("a" .. 'b')
ab
> print(157 .. 428)
157428
> 
  • 使用 # 来计算字符串的长度 , 放在字符串前面 .
> str = "abcd"
> print(#str)
4

table(表)

Lua 中的表(table)其实是一个”关联数组”(associative arrays),数组的索引可以是数字或者是字符串 ( 和JavaScript一样 ).

注意 : Lua 不同于其他语言的数组 , Lua数组的索引不是以 0 开头 , 而是以 1 开头 .

> table = {"a","b","c"}
> for k,v in pairs(table) do
>> print(k,v)
>> end
1       a
2       b
3       c
>

交换

Lua中交换值和其他语言不太一样 , 通常是下面这种形式 .

x, y = y, x 
a[1], a[2]= a[2], a[1] 

//实例
> a = 5
> b = 10
> print(a,b)
5       10
> a,b = b,a
> print(a,b)
10      5
>

创建变量与赋值

当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略

  • 变量个数 > 值的个数 多余变量值等于nil
  • 变量个数 < 值的个数 多余的值会被忽略
//创建3个变量   值只有2个   第3个的值为nil
a, b, c = 0, 1
print(a,b,c)             --> 0   1   nil

//创建2个变量   值有3个   第3个值忽略
a, b = a+1, b+1, b+2     -- value of b+2 is ignored
print(a,b)               --> 1   2

//下面这种是常见的错误情况   
//和第一种情况一样处理
a, b, c = 0
print(a,b,c)             --> 0   nil   nil

多值赋值经常用来交换变量,或将函数调用返回给变量 .

a, b = f()

f()返回两个值,第一个赋给a,第二个赋给b .

应该尽可能的使用局部变量,有两个好处:
* 1. 避免命名冲突。
* 2. 访问局部变量的速度比全局变量更快。

0 为 true ( 在大多数语言里0都会认作false )

Lua认为false和nil为假,true和非nil为真 .
要注意的是Lua中 0 为 true:

if(0)
then
    print("0 为 true")     
end

输出结果 :

0true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值