lua学习--系列1

LUA学习路线汇总 语法   Lua程序设计Programming in Lua   果冻想-Lua 语法入门 源码   the implementation of lua 50 英文原版 中文翻译   Lua源码鉴赏-云风   探索Lua52内部实现   详解关于Lua源码分析学习教程   Lua源码 应用   果冻想其他系列    Lua51 参考手册    Lua53 参考手册   云风博客   Lua Pr 阅读详情

学习原因:

Lua 是一个小巧的脚本语言
其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,
几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。
所以Lua不适合作为开发独立应用程序的语言。
Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。


不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。
一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。


既然这么有用、那么就很有必要学习它了。。那么现在就启程吧。


学习一门语言,最终的目的就是为了使用、而最快学习一门语言最好的方法也同样,所以则专注于如何使用它:

测试环境:eclipse 自安装lua插件,可直接建立 Lua Project 在PC上直接运行看结果,以下所有例子都在Lua5.1版本运行通过,可以放心copy即运行看结果。

1、函数的使用


-- functions
function pythagorean(a, b)   
local c2 = a^2 + b^2   
return sqrt(c2) 
end 


print(pythagorean(3,4))


运行结果: 5


在Lua中函数的定义格式为:


function 函数名(参数)
...
end --只需要在函数结束后打个end就可以了


2、循环语句


-- Loops 
for i=1,5 do   
print("i is now " .. i)  -- 用到了.. 这是用来连接两个字符串
end


运行结果
i is now 1 
i is now 2 
i is now 3 
i is now 4 
i is now 5


在Lua中函数的定义格式为:


for 变量 = 参数1, 参数2, 参数3 do
循环体
end -- 变量将以参数3为步长, 由参数1变化到参数2


3、条件分支语句


-- Loops and conditionals 
  for i=1,5 do
    print("i is now " .. i)
    if i < 2 then
      print("small")
    elseif i < 4 then
      print("medium")
    else
      print("big")
    end
  end


运行结果
i is now 1 
small 
i is now 2 
medium 
i is now 3 
medium 
i is now 4 
big 
i is now 5 
big


if else用法比较简单, 类似于C语言, 不过此处需要注意的是整个if只需要一个end


5、lua数据结构


Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组,类等都可以由table实现


-- Arrays
myData = {}
myData[0] = "foo"
myData[1] = 42


-- Hash tables
myData["bar"] = "baz"


-- Iterate through the structure
for key, value in pairs(myData) do
  print(key .. "=" .. value)
end


输出结果
0=foo 
1=42 
bar=baz


Table的嵌套


  -- Table ‘constructor’
  myPolygon = {
    color="blue",
    thickness=2,
    npoints=4;
    -- 这其实就是一个小table, 定义在了大table之内, 小table的 table名省略了
    {x=0,   y=0},
    {x=-10, y=0},
    {x=-5,  y=4},
    {x=0,   y=4}
  }


  -- Print the color
  print(myPolygon["color"])


  -- Print it again using dot notation
  print(myPolygon.color)


  -- The points are accessible
  -- in myPolygon[1] to myPolygon[4]


  -- Print the second point’s x coordinate
  print(myPolygon[2].x)
  
输出结果
blue
blue
-10


6、函数的调用


a、不定参数


-- Functions can take a variable number of arguments.
function funky_print (...)
  for i=1, arg.n do
    print("FuNkY: " .. arg[i])
  end
end


funky_print("one", "two")


输出结果
FuNkY: one
FuNkY: two


* 如果以...为参数, 则表示参数的数量不定.
* 参数将会自动存储到一个叫arg的table中.
* arg.n中存放参数的个数. arg[]加下标就可以遍历所有的参数.




b、以table做为参数


-- Functions with table parameters
function print_contents(t)
  for k,v in pairs(t) do -- for k,v in t do 这个语句是对table中的所有值遍历, k中存放名称, v中存放值
    print(k .. "=" .. v) 
  end
end


print_contents{x=10, y=20}


输出结果
y=20
x=10


在线电子书籍: http://book.luaer.cn/


下一节将开始讲C与lua相互调用的。


跟着 Lua 5.1 官方参考文档学习 Lua (1) 介绍、词法约定、值和类型 阅读详情

相关推荐

【Lua基础系列】之热更新

【Lua基础系列】之热更新 大家好,我是Lampard~~ 欢迎来到Lua基础系列的博客 PS:本博客知识参考资料为:《Lua程序设计第四版》,该书由Lua的创始人2018年所编著,所以大家可以放心去吸收知识 前文再续,书接上一回。 今天讲的是lua中的热更新,lua之所以好用除...

Lampard的博客 3398

Lua系列文章(1)---Lua5.4参考手册学习总结

lua5.4的参考手册,为后续学习Lua作为铺垫与参考

追赶时代的博客 5205

系列2—编辑调试Lua脚本

BabeLua编辑调试Lua脚本   上一篇《系列1—BabeLua入门》  设置Lua脚本文件夹 在VS菜单上选择:【lua】【Settings】打开设置界面,如下图(左上角选中【Lua Folder】)    上图分为两个区域:下方的“New folder setting”以下,是用来设置一套参数;上方的区域是用来选择多套参数中的一套并使之生效。如图:其中(1),(5)项为必设项,

babestudio的专栏 1万+

Lua入门系列----pil学习笔记之 Type and Values (1)

本文作者:sodme本文出处:http://blog.youkuaiyun.com/sodme声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.参考资源:http://www.lua.org/pil/ 一 个小小的脚本语言都能玩出这么多花样来,还真有点让我始料不及。你还别说,越写越觉得有意思了,现在干的活,很多的时候,象一个打字员或...

编程资料大全 167

【Lua进阶系列】lua元方法

【Lua进阶系列】之Lua元方法案例+字段 大家好,我是Lampard~~ 欢迎来到Lua进阶系列的博客 前文再续,书接上一回。今天和大家讲解一下lua中的元方法 __index字段 说起lua那么就不得不提其元表,lua通过元表的设置实现了高级语言中的“继承”的功能。 关于lua面向对象以及元表内容可以参考这篇博客 当我们访问一个表中不存在的元素时,会执行以下三个步骤: ...

Lampard的博客 4292

Lua游戏脚本开发1 -- 初始化Lua

<br />我最近学习游戏脚本编程。接触到的第一个脚本编程语言就是Lua。我使用的Lua版本是5.1。遗憾的是,我学习脚本编程的那本书中使用的版本是老版本的Lua,由于Lua在新版本中,对很多函数调用作了改变,我发现根据书中的介绍,很难成功地编译程序。经过自己的研究,终于可以正常地使用Lua提供的基本功能了。所以我把我的解决方法写出,和大家分享,希望对其他使用新版本Lua遇到麻烦的朋友有所帮助。<br /> <br />下载安装好Lua后,就可以使用了。我使用Visual Studio .NET 2003的

gmbros的专栏 2755

Lua 学习开篇

接触lua是一次很偶然的机会,主要用了lua脚本跟C/C++交互的特性。没有深入研究,根基不牢。近期打算从基础开始,慢慢地来体会这门脚本语言。 学习环境fedora,lua版本5.1.4,学习资料《Programming in Lua, 2ND Edition》 文章中的例子,博主都亲手去运行过。 目前完成的基础学习部分文章如下: Lua基础 初

imxiangzi的专栏 358

Lua语言的学习路线

Lua最早是在1993年由巴西的天主教大学(Pontifical Catholic University of Rio de Janeiro)开发,最初是作为一个扩展语言来满足需要嵌入性和可扩展性的应用程序的需求。Lua的设计原则是轻量级、快速且易于学习。

2501_90216450的博客 1331

Lua 5.1 学习指南

Lua 5.1 是 Lua 编程语言的一个重要版本,发布于 2006 年 2 月 21 日。它引入了模块系统、增量垃圾回收、长字符串和注释的新语法等特性,相比 Lua 5.0 更加成熟和稳定。Lua 5.1 因其在嵌入式应用和游戏开发中的广泛使用(如 LuaJIT 兼容 Lua 5.1),至今仍是许多项目的首选版本。

步子哥的博客 841

lua学习相关教材和网站

Lua 5.1 Reference Manual : http://manual.luaer.cn/ lua程序设计: http://book.luaer.cn/ lua官网:http://www.lua.org/ 游戏开发网: http://game.chinaitlab.com/List_1862.html (通过例子学习Lua) 中国lua开发者网...

xangpn的博客 2755

fMRI数据处理:从DICOM到NIFTI(上)

哈喽,这里是系列fMRI数据处理文章专栏。包括从核磁拷贝完DICOM格式的文件,到整理数据,检查数据,数据预处理,后续分析等等内容。如果你是一个初学者,特别是心理学或者是刚踏入认知神经科学的小白,那么这个专栏可以帮助你从头到尾完成数据处理直到结果的可视化。如果你已经进入了认知神经科学领域,这里面的内容可能过于细致,并且找不到你想要的答案,不过可以在帖子下留言评论,欢迎大家提供宝贵的意见!如果是医学相关,可能这些内不太准确或专业,谨慎参考!

weixin_44933894的博客 2481

lua学习笔记1---VC下lua环境的搭建

本人是Lua的初学者,了解了Lua的一些法语与特性,希望趁现在有空研究Lua的源码,写一个学习笔记,边学习边记录。 对于Lua的语法,有两个经典的电子书,分享如下: Lua程序设计:http://dl.dbank.com/c0c0fbks4f Lua-5.1中文手册:http://dl.dbank.com/c0fn9ud061 因为我的ubuntu11.04主机出了点问题,今天的东西都写在

pengtwelve的专栏 1739

AI数字人直播带货全攻略:从零搭建到高效运营

本文提供了一份从零开始搭建与运营AI数字人直播间的完整指南。详细解析了AI数字人直播带货的核心价值与适用场景,并分步讲解了硬件准备、软件选择、数字人创建、话术编排、OBS推流设置及开播测试等关键环节。最后,文章还分享了高效运营策略与常见避坑指南,旨在帮助商家利用AI技术实现降本增效,打造24小时不间断的智能带货直播间。

weixin_29269441的博客 2231

【Lua进阶系列】lua_Stack

【Lua进阶系列】之调用C_API 大家好,我是Lampard~~ 欢迎来到Lua进阶系列的博客 前文再续,书接上一回。今天和大家讲解一下lua中的调用C_API

Lampard的博客 1727

1020空心杯电机驱动设计与ESP32实战

空心杯电机是一种高动态响应的直流微特电机,其驱动本质是解决电感负载下的大di/dt启动、反电动势耦合与电流纹波抑制问题。核心原理在于建立包含内阻、电感和反电动势的等效电路模型,并据此匹配开关器件、PWM参数与采样闭环。技术价值体现在小体积下实现毫秒级响应、低噪声(>30kHz)、高精度电流保护(±50mA)及热鲁棒性。典型应用于微型航模、手持云台与精密执行器等对功率密度和动态性能敏感的嵌入式系统。本文以1020规格空心杯电机为对象,基于ESP32平台完成从MOSFET选型、32kHz硬件PWM生成到INA2

weixin_42298164的博客 579

Python爬虫实战:绕过B站-352风控的完整解决方案

网络爬虫技术是数据采集和自动化测试的重要工具,其核心原理是通过模拟HTTP请求获取网页数据。在实践过程中,开发者常会遇到网站反爬机制,这涉及请求指纹识别、IP行为分析等安全技术。这些风控措施的价值在于保护网站数据安全和服务器资源,广泛应用于电商、社交、内容平台等场景。针对B站等平台的-352风控错误,需要综合运用请求头伪装、会话管理、参数签名破解等技术方案。本文重点探讨如何通过构建完整的浏览器级请求头、管理Cookie会话、以及使用Playwright等浏览器自动化工具,有效解决Python爬虫在B站数据采

weixin_33912638的博客 391

【Lua进阶系列】实例lua调用capi

【Lua进阶系列】C++与lua的相互调用 大家好,我是Lampard~~ 欢迎来到Lua进阶系列的博客 首先祝大家2021新年好~工作顺利节节高 前文再续,书接上一回。今天和大家实战一下lua调用c++的API (一)前言 大家都知道,lua和c/c++之间是通过一个lua_Stack进行交互的,关于lua_Stack,网上对它的叫法有很多,有的说它是一个lua的堆栈,有的说它是lua...

Lampard的博客 2402

告别功能限制:Win11家庭版无损升级专业版全攻略

本文详细介绍了如何将Win11家庭版无损升级到专业版的全过程,包括升级前的准备、两种官方升级方案(Microsoft Store购买和使用产品密钥)以及命令行升级方法。升级后可解锁远程桌面、组策略编辑器和BitLocker加密等高级功能,适合需要更多商业功能的用户。

weixin_32822843的博客 697

跟着 Lua 5.1 官方参考文档学习 Lua (4)

错误处理、元表、环境

alenliu's blog 1457

基于CLICKHOUSE的数据仓库分层规范

接入层。

zjyy1987的博客 769

季节性注意力的时间序列预测模型 SAITS 进行数据补齐 完整代码数据

季节性注意力的时间序列预测模型 SAITS 进行数据补齐 完整代码数据

1071

Lua学习笔记:C++操作Lua的表

C++操作Lua的表

孙君的空间站 2609

微信小程序 - 详解苹果ios手机请求不到数据访问不了接口,但安卓却可以正常访问。wx.request苹果手机IOS请求失败、安卓可以请求成功(微信小程序上线后苹果手机不能访问接口,网络请求失败排查)

微信小程序上线后,苹果手机请求不到数据,安卓可以,微信小程序,安卓可以调接口,苹果调不了的解决方案,微信小程序:IOS访问不了接口,安卓可以正常访问,微信小程序ios版本连接不了服务器,小程序Android可以请求,ios请求失败wx.request,成功上线的小程序,安卓机可以正常访问使用,苹果微信小程序不执行请求,苹果系统无法加载数据,微信小程序 iOS 网络失败,微信小程序接口请求在ios端报错,苹果手机真机调试微信小程序出现网络请求失败,微信小程序 安卓正常 ios调接口显示网络请求失败,微信小程序

🏆 前端领域优质创作者 4359

【Lua学习】Lua最最基础的

lua最最基础的

weixin_42206314的博客 2069

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Lua学习之1 :C++调用Lua函数

3. 问题分析         表面上看这是一个阶乘问题,但实际上是大数据运算问题。当输入的n超过20, 例如21,那n的阶乘将达到惊人的51,090,942,171,709,440,000,这个数字已经超出了 64位无符号数ulong所能表示的范围(0~18,446,744,073,709,551,615),所以我们 不能直接用阶乘公式n! = n*(n - 1)!和递归

ConnorWang2012的专栏 1265

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 高级系统架构师培训笔记
下一篇: 字符编码问题
andyhuabing
博客等级 码龄19年 704粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值