lua编译器和lua解释器有什么区别?
一、lua编译器和lua解释器的区别
lua编译器把lua脚本编译成lua虚拟机的指令。lua解释器除了有编译器外还有虚拟机,可以执行编译后的指令。lua是一门精妙简洁,而功能强大的语言,学习和掌握它的核心机制有着重要的意义。
Lua作用域
在Lua语言中声明的变量默认是全局变量,声明局部变量需要使用local关键字,和其他语言相比这有点特殊。
a = 10
function func()
b = 10 — 仍然是全局变量
local c = 20 — 局部变量
end
func()
print(a + b) –> 20,即可以获取b的值
print(c) –> nil
也就是说在lua中只要变量没定义成local,都可以在全局中获取它的值。对于局部变量,也分为函数作用域和块作用域。下面例子中a的作用域在fun函数内部,而b的作用域为if语句块内。
function fun()
local a = 1
if a == 1
then
local b = 1
a = a + 1
print(b) — 1
end
print(a) — 2
print(b) — nil,超出块作用域
end
fun()
print(a) — nil,超出函数作用域
延伸阅读:
二、生命周期
生命周期是指变量可以被访问的时间段,也就是从分配内存给它到回收它的内存中间的一段时间。变量的生命周期分为两种
一种是在栈中分配内存的变量,它的生命周期随着作用域的结束而结束,上面案例中的变量都符合这个规则。另一种是在堆中分配内存的变量,它的生命周期与作用域不一致,比如在堆中申请的内存,退出作用域后仍然存在。Lua采用了自动内存管理,也就是说我们不用操心Lua创建的对象是怎么分配和回收的。
猜你喜欢LIKE
相关推荐HOT
更多>>
Concurrent Programming, Parallel Programming 的本质区别是什么?
一、Concurrent Programming, Parallel Programming 的本质区别略有交叉,各有不同。Parallel Programming强调如何在多于1个CPU等情况下对系详情>>
2023-10-13 23:11:46
简单工厂模式、工厂方法模式和抽象工厂模式有何区别?
一、简单工厂模式、工厂方法模式和抽象工厂模式的区别简单工厂模式简单工模式时类的创建模式,又叫做静态工厂方法(static Factory Method)。...详情>>
2023-10-13 21:42:32
聚类和降维有什么区别与联系?
一、聚类和降维的区别与联系区别降维就是复杂的高维数据信息简化为更容易阅读的低维数据信息,就像素描把三维的立体图形绘制在二维的平面上,而...详情>>
2023-10-13 20:26:02
OC中协议和多态有什么区别?
一、OC中协议和多态的区别在Objective-C中,协议(Protocol)和多态(Polymorphism)是两个不同的概念,它们的区别如下:协议(Protocol):协...详情>>
2023-10-13 20:01:13热门推荐
大家都在用的Mpp数据库有哪些?
沸Concurrent Programming, Parallel Programming 的本质区别是什么?
热lua编译器和lua解释器有什么区别?
热怎么自定义Visual Studio代码折叠识别的区域?
新4核4线程和4核8线程区别?
简单工厂模式、工厂方法模式和抽象工厂模式有何区别?
Spark 和 Hadoop 有什么区别?
cs和bs区别?
axios和ajax区别?
ar模型和ma模型的区别?
聚类和降维有什么区别与联系?
DOF和HP有什么区别?
OC中协议和多态有什么区别?
SAS 9.0中,class指令跟by指令有哪些区别?
技术干货






