# Lua是一种轻量、小巧的脚本语言,用标准C语言编写并以源码形式开发。设计的摸底是为了嵌入到其他应用程序中,从而为应用程序提供灵活的拓展和定制功能。

# Lua安装
# 官网:https://www.lua.org
# 1.官网下载源码
wget https://www.lua.org/ftp/lua-5.4.3.tar.gz
# 2.编译安装
cd lua-5.4.3
make linux test
make install
# 3.如果test失败,需要安装
yum install -y readline-devel
# 4.验证是否安装成功
lua -v # lua的语法和C/c++语法非常相似
# 交互式启动lua。直接输入lua命令就进入了lua的交互命令行
# 可以直接输入print('hello world') # 脚本式。创建的文件必须以.lua为后缀
# 执行脚本:lua abc.lua
# 或者你可以直接指定执行脚本
#! /usr/local/bin/lue
# 以下语法都兼容
a=1
b=a+2 a=1;
b=a+2; a=1;b=a+2; a=1 b=a+2 # 单行注释
--print('hello world') # 多行注释
--[[
print('hello world')
--]] # 关键字:
and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while goto # 运算符
# 算数运算符:
+加 -减 *乘 /除 %取余 ^乘冥 -负号 # 关系运算符
10==10 true
10~=10 false 不等于
20>10 true
20<10 false
20>=10 true
20<=10 false # 逻辑运算符
and 逻辑与 A and B
or 逻辑或 A or B
not 逻辑非 取反 A=false
B=true
A and B false
A or B true # 其他运算符
.. 两点用来链接两个字符串:"hello ".."world" 输出:hello world
# 井号是医院运算符,返回字符串或者表的长度:#"hello" 输出:5 # 全局变量&局部变量
# 在lua语言中,全局变量无需声明即可使用。在默认情况下,变量总是认为是全局的,如果为提前赋值,默认为nil。
# 你想声明局部变量需要用到local关键字
# 如:
local a = 100; print(a) # lua数据类型
nil(空,无效值)
boolean(布尔,true/false)
number(数值)
string(字符串)
function(函数)
table(表)
thread(线程)
userdata(用户数据) # 你可以直接用type去查看
print(type(nil)) :string
print(type(true)) :boolean
print(type(1*1*1.1)) :number
print(type("hello world")) :string
print(type(io.stdin)) :userdata
print(type(print)) :function
print(type(type)) :function
print(type(type{})) :table
print(type(type{type(x)})) :string # 多行字符串的定义
html = [[
<html>
<title>
</title>
</html>
]] # table类型
# 使用例子:
a = {}
arr = {"TOM","JERRY"} :数组的访问arr[1],lou下标是从1开始
b = {}
b['x'] = 1
b['y'] = 2 :字典的访问:b['y'] arr = {"TOM",x=10,"Jerry",y=20}
# 如何获取上面的值
TOM:arr[1]
10:arr['x'] 或者 arr.x
Jerry:arr[3]
20:arr['y'] 或者 arr.y # function类型
# 声明函数
function f(a,b)
print(a,b)
end # 调用:
f() :nil nil
f(2) :2 nil
f(2,6) :2 6
f(2,6,8) :2,6
# 函数参数随便你怎么传
# 可变参数&返回值
function add(...)
a,b,c=...
return c,b,a
end
a,b,c=add(1,2,3) # if then elseif else控制语句
function testif(a)
if a>0 then
print("a是正数")
end
end function testif(a)
if a>0 then
print("a是正数")
else
print("a是负数")
end
end function testif(a)
if a<0 then
print("a是负数")
elseif a==0 then
print("a是0")
elseif a>=1 and a<=10 then
print("a是1到10之间")
else
print("else")
end
end # while循环
function testwhile()
local i = 1
while i<=10 do
print(i)
i=i+1
end
end # repeat循环 until条件满足才退出循环
function testrepeat()
local i=10
repeat
print(i)
i=i-1
until i < 1
end # for循环
for i=1,100,10 do
print(i)
end arr = {"Tom", "jerry", "Rows"}
for i,v in ipairs(arr) do
print(i,v)
end
# 输出,i是索引,v是值:
1 Tom
2 jerry
3 Rows arr = {"Tom", x="test", "jerry", "Rows"}
for i,v in pairs(arr) do
print(i,v)
end
# 输出,i是索引,v是值:
1 Tom
2 jerry
3 Rows
x test

Lua 语言的更多相关文章

  1. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  2. 51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言

    http://os.51cto.com/art/201112/307610.htm 说到Web服务器,也许你第一时间会想到Apache,也许你会想到Nginx.虽然说Apache依然是Web服务器的老 ...

  3. 【quick-cocos2d-x】Lua 语言基础

    版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...

  4. lua语言入门之Sublime Text设置lua的Build System

    转自: http://blog.csdn.net/wangbin_jxust/article/details/8911956 最近开始学习LUA语言,使用Sublime Text作为编辑器,不得不说, ...

  5. 编译并使用Lua语言

    Lua是一个小巧的脚本语言,该语言设计的目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. 可扩展性.Lua的扩展性非常卓越,可以通过Lua代码或C代码扩展,很多功能可以通过外部库来扩 ...

  6. Lua语言在Wireshark中使用(转)

    1.       检查Wireshark的版本是否支持Lua 打开Wireshark,点击“HelpàAbout Wireshark”菜单,查看弹出的对话框,如果有“with Lua 5.1”表示支持 ...

  7. Unity进阶----Lua语言知识点(2018/11/08)

    国内开发: 敏捷开发: 集中精力加班堆出来第一个版本 基本没啥大的bug 国外开发: 1).需求分析: 2).讨论 3).分模块 4).框架 5).画UML图(类图class function)(e- ...

  8. lua语言自学知识点----Lua与.Net相互调用

    知识点: LuaInterface作用是用来完成Lua与C#的相互调用. LuaInterface核心库:1.luainterface.dll 用于C#读取lua(放在bin目录同级) 2.luane ...

  9. lua 语言笔记

    Lua语言基础汇总(1) -- 类型与值 基础介绍 Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8种基本类型,分别是: nil(空)类型 bool ...

  10. lua语言三目运算符

    [1]lua语言中完整的三目运算符 完整三目运算符形式:(a and {b} or {c})[1] [2]分析原因 大部分C或C++程序员经常会用到三目运算符(三元运算符),形如 a ? b : c; ...

随机推荐

  1. freeswitch使用mod_shout模块播放mp3

    概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...

  2. 题解 P7075 [CSP-S2020] 儒略日

    当时考场上因为这个炸掉,一年后回来复仇. 这里提供一个与大多数人不一样的做法. 首先考虑一个简单一些的问题,怎么应付单个询问? 不难想到,我们对于一个日期,让他从 \(-4713\) 年 \(1\) ...

  3. 从数字化概念到落地,都说是一道坎,JNPF能为企业带来什么呢?​

    数字经济席卷全球推动产业转型是必然趋势,人类社会正在数字化大潮中发生深刻变革,数字化越来越成为推动经济社会发展的核心驱动力.企业正处于数字经济大潮的风口浪尖,故企业经验决策者应深刻认识数字化转型对于企 ...

  4. SmartIDE v0.1.18 已经发布 - 助力阿里国产IDE OpenSumi 插件安装提速10倍、Dapr和Jupyter支持、CLI k8s支持

    SmartIDE v0.1.18 (cli build 3538) 已经发布,在过去的Sprint 18中,我们集中精力推进对 k8s 远程工作区 的支持,同时继续扩展SmartIDE对不同技术栈的支 ...

  5. ARM学习1

    ARM相关概念 1.ARM的发展史 1. 1978年,CPU公司 Cambridge processing Unit 2. 1979年 Acorn 3. 1985年, 32位,8MHz, 使用的精简指 ...

  6. 当运行npm install 命令的时候带上ignore-scripts,会发生什么?

    摘要:运行npm install 命令的时候带上ignore-scripts, 可以避免一个恶意包里的病毒. 本文分享自华为云社区<运行npm install 命令的时候带上--ignore-s ...

  7. html关键字大全

    html标签属性大全 html标签属性大全从网上搜集整理的常用html标签,供朋友们交流学习html用. html标签<marquee> <marquee>...</ma ...

  8. jdk8对象集合转map集合

    package koukay.Controller.Controllers; import koukay.Portal.webservices.Entity.User; import com.fast ...

  9. C语言学习之我见-strncat()可调整的字符串拼接函数

    strncat()函数,用于两个字符串的拼接. (1)函数原型 char * strncat(char * Dest,const char * Source,size_t _Count)` (2)头文 ...

  10. Node.js精进(3)——流

    在 JavaScript 中,一般只处理字符串层面的数据,但是在 Node.js 中,需要处理网络.文件等二进制数据. 由此,引入了Buffer和Stream的概念,两者都是字节层面的操作. Buff ...