0基础lua学习(二) 数据类型

网友投稿 973 2022-05-30

1.  命名规范

a)    区分大小写

b)   不要使用关键字命名

c)     数字、字母、下划线、不要以数字开头,避免以下划线开头,或者后面是大写字母的命名

2.  类型与值

0基础lua学习(二) 数据类型

a)    nil – 空

b)   boolean – 布尔

c)     string – 字符串

d)   function – 函数

e)    table – 表

f)      userdata –自定义数据类型

g)    thread – 线程

函数print用来检测一个变量的类型

print(type(var))

var = 20

print(type(var))

var = "helloworld"

print(type(var))

var = print

print(type(var))

var(type(var))

var ={}

print(type(var))

1) nil

在Lua中nil表示的是一种类型,它只包含一个值nil。任何在未赋值之前都是nil.当一个全局变量赋值为nil,表示删除这个变量。

2)boolean

有两个值 true,false。 nil也表示false,其它情况都为真。

0也是真。

var= nil

if var then

print("true")

else

print("false")

end

var = nil    console:false

var = false  console:false

var =  0     console:true

var = “”    console:true

var = “helloworld”  console:true

只有为false 或者nil。等于0也是true

3)number

表示实数,且只有这一种

a = 10

b= 50.2

c=5e20

4)string

表示一个字符序列,通常用单引号或者双引号

如果字符格式多,用下面这种

long_str = [====[ i am am

"long",

long

str]====]

print(long_str)

连接字符串

var ="hello".."hello"

print(var)

获取字符串长度

var ="hello".."hello"

print(var)

print(#var)

long_str = [====[ i am am

"long",

long

str]====]

print(long_str)

print(#long_str)

5)table 类似C++的map,比map繁琐

,table极大简化了使用过程

如果C++声明

Std::map mvMap;

mvMap[“a”] = “test”

mvMap.insert(std::Map::value_type(“b”,”test2”));

map mapStudent;

mapStudent.insert(pair(1,"student_one"));

lua中这样声明

t = {a = “test1”,b = “test2”}

6.thread(线程)

在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。

线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

7.userdata(自定义类型)

userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。

Lua 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【C++ 语言】pthread_mutex_t 互斥锁
下一篇:Huawei LiteOS简介
相关文章