初识Lua语言

初识Lua语言Lua 语言从一开始就被设计为能与 c c 及其他常用语言开发的软件集成在一起使用的语言 Lua 语言作为一门胶水语言 支持组件化的软件开发方式 通过整合已有的高级组件可以轻松构建新的应用 在软件中台化开发模型中 Lua 势必会扮演十分重要的角色 当然 Lua 还有其他特性和优点 Lua 的运用场合也有其他 这里就不再赘述 接下来进入正题 1 Lua 解析器学习 Lua 语言还是从 helloworld 开始

Lua语言从一开始就被设计为能与c/c++及其他常用语言开发的软件集成在一起使用的语言。Lua语言作为一门胶水语言,支持组件化的软件开发方式,通过整合已有的高级组件可以轻松构建新的应用。在软件中台化开发模型中,Lua势必会扮演十分重要的角色。

当然,Lua还有其他特性和优点, Lua的运用场合也有其他,这里就不再赘述,接下来进入正题。

1、Lua解析器

说明:我的环境中/usr/local/bin/lua是5.3版本的Lua,/usr/bin/lua是5.1.4版本的Lua。默认是运行/usr/local/bin/lua。另外,同样是15的平方,5.3版本的Lua运算结果是225.0,在这之前的版本是225,这个跟版本的默认数值类型有关,后续会介绍。

在交互模式下,解析器会把我们输入的每一行当作完成的chunk或者表达式执行,若发现我们输入的某一行不完整那么它会等到chunk或者表达式完整后再进行解释执行。在http://www.lua.org/ftp/上可以下载到Lua的源代码,编译生成的lua可执行程序即为Lua解析器。Lua可执行程序的完整参数为:

lua [options] [script [args] ] 

Lua程序可以通过预先定义的全局变量arg去解析器传入的用户参数,例如:

$ lua test.lua a b c 

解析器在运行代码前创建一个名为arg的表,其中存储了所有命令行参数,索引0中保存的内容为脚本名称,索引1中保存的内容为a,以此类推;在脚本名称之前的所有选项则位于负数索引值之上,如:

$ lua -e “sin=math.sin” test.lua a b c 

解析器获取参数:

arg[-3]= “lua” arg[-2]= “-e” arg[-1]= “sin=math.sin” arg[0]= “test.lua” arg[1]= “a” arg[2]= “b” arg[3]= “c” 

2、类型和值

c/c++中定义一个变量必须指明该变量的类型(以让编译器明确该变量占据的内存大小),但在Lua中却不需要该指明。Lua语言是一种动态类型语言,在这种语言中变量不需要定义类型,不过每个值还是带有其自身的类型信息。

使用未经初始化的全局变量也不会导致报错,当使用未初始化的全局变量时得到结果是nil;Lua使用nil来表示无效值,把nil赋给全局变量时Lua会回收该全局变量。不过,我们不提倡将一个变量用作不同类型,因为会降低代码的可读性。

Boolean类型的值只具有两个取值情况,即true和false,需要注意的是,Lua中将Boolean值false和nil外的所有值都视为真,零值和空字符串也被视为真。

跟c/c++类似,Lua的and和or也支持短路原则,即只有在必要时才对第二个操作数进行求值。

参考书籍:《Lua程序设计》(Roberto lerusalimschy著)

本文摘自公众号Linux开发者札记。如果觉得本文对你有点用处,欢迎关注。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208059.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午12:27
下一篇 2026年3月19日 下午12:27


相关推荐

  • Eureka工作原理

    Eureka工作原理上节内容为大家介绍了,注册中心Eureka产品的使用,以及如何利用Eureka搭建单台和集群的注册中心。这节课我们来继续学习Eureka,了解它的相关概念、工作流程机制等。Eureka作为SpringCloud体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。Eureka核心概念回到上节的服务注册调用示意图,服务提…

    2022年4月5日
    41
  • 可用的公开 RTSP/ RTMP 在线视频流资源地址[通俗易懂]

    更新时间:2020年11月09日最近在做海康视频的流媒体转码,特收集几个可以访问的在线流媒体资源测试使用:RTSP:rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.movRTMP:湖南卫视:rtmp://58.200.131.2:1935/livetv/hunantv广东卫视:rtmp://58.200.131.2:1935/livetv/gdtv东方卫视:rtmp://58.200.131.2:1935/livet

    2022年4月6日
    179
  • C#的封装_封装元器件

    C#的封装_封装元器件封装:即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的作用:封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作封装的优点:1.良好的封装能够减少

    2025年10月12日
    3
  • 2019美赛A题翻译

    2019美赛A题翻译(新)2019美赛A题思路详解(纯干货)https://blog.csdn.net/i_CodeBoy/article/details/866636282019MCM问题A:权利的游戏在虚构的电视连续剧“权力的游戏”中,基于一系列史诗般的幻想小说“冰与火之歌”[1],三只龙是由“龙之母”的DaenerysTargaryen养育。刚刚孵化时,龙是小的,大约10公…

    2022年6月11日
    27
  • python anaconda和pycharm的区别_质量度三者关系

    python anaconda和pycharm的区别_质量度三者关系哈喽~大家好呀Python作为深度学习和人工智能学习的热门语言,你们知道Python、Pycharm、Anaconda三者之间的关系吗?学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用。下面来介绍运行Python代码常用到的工具总结。一.Python、Pycharm、Anaconda关系介绍1.PythonPython是一种跨平台的计算机程序语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动…

    2022年8月29日
    6
  • JDK1.8下载安装(Windows版)

    JDK1.8下载安装(Windows版)官网下载JDK在oracle上的下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html,根据自己的需要,我这儿选择的是“JavaSE8u201/JavaSE8u202”,点击【JDK-DOWNLOAD】,打开第二张截图,如图选择接受,然后下载“JavaSEDevelopmentKit…

    2022年7月16日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号