码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端也学一下 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
    • 相关阅读:
      PX4模块设计之三十一:ManualControl模块
      MySQL安装配置与使用教程(2023.11.13 MySQL8.0.35)
      基本工具-NETCAT(telnet-banner、传输文本信息)
      LeetCode每日一题——895. 最大频率栈
      什么是RTMP 和 RTSP?它们之间有什么区别?
      KWin全解析 —— overview.md(1)
      xxx.ko 驱动模块加载报错 “unknown symbol in module or invalid parameter”
      【数值计算方法】矩阵特征值与特征向量的计算(一):Jacobi 旋转法及其Python实现
      单片微机原理与接口技术期末复习
      【BOOST C++ 13 并行编程】(1) Boost.Thread
    • 原文地址:https://blog.csdn.net/web220507/article/details/127845931
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号