lua 第4天 值与类型
C:\Users\Administrator>lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print(type("a"))
string
> print(type(3/4))
number
> print(type(3.4))
number
> print(type(print))
function
> print(type(io))
table
> a=print
> a("4")
4
> a(type(a))
function
Lua里 居然可以把函数赋值给变量 - -
> print(type(aa))
Nil
未初始化定义的值位nil
Nil 适合用在异常
Lua 里 false 和 nil 为假 其他都为真
> a=54
> b=3.2e2 3.2*10的2次方
> print(b)
320
字符串
Lua 中的字符串是不可以变得 不能像c一样直接修改里面的某一个字符
只能通过新的变量才行
> a="one string"
> b=string.gsub(a,"on","an") 把a里的 on 替换成 an
> =b
ane string
>
定义字符串和转义
> a='hello'
> =a
hello
> c="i'm a erhuo"
> =c
i'm a erhuo
> c="i\"m erhuo"
> =c
i"m erhuo
>
> ="\065 = A" --assic码
A = A
Lua 里的转移序列
\a
\b 退格
\f 提供表格
\n 换行
\’
\”
\r 回车
\\ 输出反斜杠
\t 制表符
> page=[[
>> <html>
>> <body>
>> </body>
>> </html>
>> ]]
> =page
<html>
<body>
</body>
</html>
//计算时会自动转义
> print("10"+2)
12
//拼接字符串用..
> ="A".."=".."B"
A=B
#获取字符串长度
> print(#"hello")
5
Table 表
> a={}
> a["x"]=10
> b=a
> print(b)
table: 00C592F0
> print(b["x"])
10
> =b["x"]
10
清楚后就不存在了
> a=nil
> =a
nil
> =a["x"]
stdin:1: attempt to index global 'a' (a nil value)
stack traceback:
stdin:1: in main chunk
[C]: ?
>
Lua 索引是从1开始
> t={}
> for i=1,1000 do t[i]=i*2 end
> =t[9]
18
> t["x"]=10
> =t["x"]
10
> t[1]="a"
> =t[1]
a
> =t[2]
4
>
删除
> t["x"]=nil
> =t["x"]
Nil
a={}
a[“name”] a.name 一样
a[“x”] a[x] 不一样
输出最大索引
> print(#t)
1000
定义数组
> for i=1,100
>> do
>> t[i]=i+1
>> end
> =t[10]
11
循环打印
> for i=1,#t
>> do
>> print(t[i])
>> end
打印数组里最后一个值
>
> print(t[#t])
2000
删除最后一个值
t[#t] = nil
删除后最后一个值 会自动减少
> print(t[#t])
2000
> t[#t]=nil
> print(t[#t])
1998
> print([#t])
stdin:1: unexpected symbol near '['
> print(#t)
999
追加索引
> print(#t)
999
> t[#t+1]=3000
> print(#t)
1000
> print([#t])
stdin:1: unexpected symbol near '['
> print(t[#t])
3000
> t[#t+1]=3001
> print(t[#t])
3001
强转类型再输出
> i=10;j="10";k="+10"
> a={}
> a[i]="one"
> a[j]="two"
> a[k]="three"
> print(a[j])
two
> print(a[k])
three
> print(a[i])
one
> print(a[tonumber(k)])
one
> print(a[tonumber(j)])
one