• 前端也学一下 Lua 呀


    为什么要学 lua

    • neovim/nvchad/… 支持 lua 写配置文件
    • WezTerm 也是用 lua 写配置文件

    用 lua 写配置,其实更多的是倾向于嵌入式编程,写配置用 json/toml/yaml/xml 等文件可能更加好一点

    安装

    以 linux 为例,windows 和 macOS 差不多(也是使用 brew 安装,更加方便)

    curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz
    tar zxf lua-5.4.4.tar.gz
    cd lua-5.4.4
    make all test
    sudo make install
    which lua # 检查 lua 命令 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    repl 环境和文件运行

    • lua 的 repl 环境
    • 在文件编写 .lua 文件,然后使用 lua 命令运

    这里使用第二种 lua 文件运行,了解 lua 的模块化,从而能组成一个完整的程序

    第一个 lua 程序

    touch index.lua
    nvim index.lua
    
    print("hello world") 
    
    • 1
    • 2
    • 3
    • 4
    • 增加 shebang 开头注释不需要 lua 运行
    #!/usr/local/bin/lua
    
    print("hello world") 
    
    • 1
    • 2
    • 3

    变量

    • 全局变量(注意:没有声明)
    • 本地变量(使用 local 声明)
    • 函数声明变量 (使用 function 声明)
    • 表中域 t = {} t["k"] = "v"
    • 代码块中的变量 (代码使用 缩颈和关键字包含,没有 {} 包含)
    • 变量赋值* 使用 , 分割变量 x, y = y, x

    lua 类型系统

    没有类型标注,使用 type 判断类型

    类型 type 说明
    nil type(nil) -> nil nil 表示空,相当于:false。 一个未定义的变量使用时是 nil
    string type("hello world") -> string 字符串支持单双引号
    boolean type(false) -> boolean false/true
    number 3.14 * 2 -> number 双精度实浮点型
    function type(print) -> function Lua或C函数
    userdata type(io.stdin) -> userdata 表示任意存储在变量中的C数据结构
    thread type(type) -> thread 表示执行的独立线路,用于执行协同程序
    table type({}) -> table “关联数组”(associative arrays

    注释

    • 单行注释: --
    • 多行注释
    --[[print("not work, commented")
    --]] 
    
    • 1
    • 2

    字符串

    • 块状字符串 [[]] 操作符
    • 字符串拼接 .. 操作符
    • 字符串长度 #"your string" # 号操作符

    字符串的隐式操作行为,就不在这里讨论了,或者有时间在补充。

    Lua 字串操作内置函数

    函数与函数调用以及函数返回值

    • 声明一个命名函数 function end 关键字
    function fn
    • 相关阅读:
      Java手写IOC
      高级IO/多路转接-select/poll(1)
      若依框架集成WebSocket带用户信息认证
      SSM复习面试题
      Aardio 第一天:使用虚表和适配器
      J1_搭建Web环境,初识JSP
      数据中心设计方案 实例,数据中心网络设计方案
      赶紧进来修内功!!! 详细讲解C语言中数据的存储(整形篇)
      【0116】PostgreSQL/MVCC
      淘宝/天猫API:upload_img-上传图片到淘宝
    • 原文地址:https://blog.csdn.net/web220507/article/details/127845931