《Lua程序设计第4版》读书笔记--Lua基本语法

Lua是一种嵌入式语言(embedded language),这就意味着Lua并不是一个独立运行的应用,而是一个库,它可以链接到其他应用程序,将Lua的功能融入这些应用。
 
注释
    单行注释,--
    多行注释
    --[[
    多行注释
    多行注释
    --]]
 
标示符
    标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)
 
Lua数据类型
    nil             表示一个无效值(在条件表达式中相当于false)
    boolean    包含两个值:  false和true
    number     双精度类型和实浮点数
    string        字符串由一对双引号或单引号来表示
    function    由C或Lua编写的函数
    userdata    表示任意存储在变量中的C数据结构
    thread        表示执行的独立线程,用于执行协同程序
    table           关联数组,数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表
 
数据类型
    nil                 表示一个无效值(在条件表达式中相当于false)
    boolean        false和true
    number         双精度类型的实浮点数
    string            字符串由一对双引号或单引号
    function        由C 或 lua 编写的函数
    userdata       任意存储在变量中的C数据结构
    thread           表示执行的独立线程,用于协同程序
    table             关联数组,数组的索引可以是数字、字符串或表类型。在Lua里,table的创建是通过"构造表达式"来完成{}。Lua的table中的数字索引值都是从1开始的,和部分语言的索引值从0开始有所区别。
 
Lua变量
    全局变量
    局部变量
    表中的域
 
Lua while循环
 
    while(condition)
    do
        statements
    end
 
Lua  数值for循环
    
    var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。
    for var=exp1,exp2,exp3 do  
        <执行体>  
    end
 
Lua 流程控制
    if( 布尔表达式 1)
    then
       --[ 在布尔表达式 1 为 true 时执行该语句块 --]
 
    elseif( 布尔表达式 2)
    then
       --[ 在布尔表达式 2 为 true 时执行该语句块 --]
 
    elseif( 布尔表达式 3)
    then
       --[ 在布尔表达式 3 为 true 时执行该语句块 --]
    else
       --[ 如果以上布尔表达式都不为 true 则执行该语句块 --]
    end
 
Lua 函数
    
    可以调用Lua语言编写的函数,也可以调用其他语言写的函数
    多返回值
    可变参数
    例:
        function add( ... )
            local s = 0
            for _, v in ipairs{...} do
                s = s + v
            end
            return s
        end
 
        print(add(1,2,3))
 
Lua 运算符
 
    算术运算符
        +    加法
         -    减法
         *    乘法    
         /    除法    
        %    取余    
        ^    乘幂
        -    负号
    
    关系运算符
            ==    等于,检测两个值是否相等,相等返回 true,否则返回 false
            ~=    不等于,检测两个值是否相等,不相等返回 true,否则返回 false
            >    大于,如果左边的值大于右边的值,返回 true,否则返回 false    
            <    小于,如果左边的值大于右边的值,返回 false,否则返回 true    
            >=    大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false    
            <=    小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false    
    
    逻辑运算符
            
            and    逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。    
            or    逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。    
            not    逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。        
 
Lua 数组
        一维数组
        多维数组    
 
Lua table(表)
    Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
    Lua table 是不固定大小的,你可以根据自己需要进行扩容。
    例 t = {"a", "b", "c", "d"}
        #t  --输出4
        t[#t + 1] = e   --就是在t末端插入一个新元素e
 
 
    当把表当作结构体使用时, 可以把索引当作成员名称使用( a. name 等价于 a["name"])
    a.x和a[x]的区别
        a.x 代表的是 [“x”] 即由字符串“x”索引的表;
        a[x]则是指由变量x对应的值索引的表
    例:
        a = {}  --空表
        x = “y”
        a[x] = 10  --新元素,键是"y",值是10
        a.x     nil   --字段"x"的值(未定义)
        a.y     10   --字段"y"的值
     ipairs按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到集合中出现的第一个不是整数的 key。
     例:
        local tabFiles = {
            [1] = "test2",
            [3] = "test3",
            [5] = "test1"
        }
 
    for k, v in ipairs(tabFiles) do    --输出"test2",在key等于2处断开
        print(k, v)
    end
    pairs遍历表,遍历过程中元素的出现顺序可能是随机的
     例:
     t = {10, print, X = 12, k = "hi"}
     for k, v in pairs(t) do
         print(k, v)
     end    
 
安全访问  
    我们想确认在指定的库中是否存在某个函数,可以if语句判断。
    或者 zip = company or {}
    
 
Lua 模块与包
    模块类似于一个封装库,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。
     require 函数
     例:require("<模块名>")
 
Lua 文件I/O
    file = io.open (filename [, mode])
    r    以只读方式打开文件,该文件必须存在。
    w    打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    a    以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
    r+    以可读写方式打开文件,该文件必须存在。
    w+    打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    a+    与a类似,但此文件可读可写
    b    二进制模式,如果文件是二进制文件,可以加上b
    +    号表示对文件既可以读也可以写
    例:
        local f = assert(io.open(filename,  "r"))
        local t = f:read("a")
        f:close()
 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lua程序设计第4》是一本非常经典的Lua编程书籍,它介绍了Lua程序设计基本概念和技巧,并提供了大量的实例和练习,适合初学者和有一定编程基础的人阅读。 这本书的PDF本非常方便,可以在电子设备上随时随地阅读。拥有PDF格式的书籍,读者可以通过搜索、书签、标注等功能,更好地管理和查找自己感兴趣的内容。此外,PDF本还可以进行页面放大、缩小、翻转等操作,适应不同设备和阅读需求。对于学习Lua编程的人来说,这本书的PDF本无疑是很有帮助的。 《Lua程序设计第4》从基础语法、数据类型、运算符等内容开始介绍Lua的基础知识,然后逐步深入到表、函数、模块等高级特性,还介绍了面向对象编程和异常处理等更高级的主题。通过阅读这本书,读者可以系统地学习Lua的各种语言特性和编程技巧,掌握Lua编程的基本原理和方法。 在阅读过程中,读者可以参考书中的实例代码进行练习,并通过实践来加深对Lua编程的理解和掌握。此外,书中还提供了一些练习题,可以帮助读者巩固所学知识,培养编程思维和解决问题的能力。 总之,《Lua程序设计第4》是一本很有价值的Lua编程书籍,提供了全面而深入的学习内容,适合想要学习Lua编程的读者阅读。PDF本的书籍具有便携性和便捷性,非常方便读者随时随地进行学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值