20191008 (19) 发生中断:优先学习 Lua 脚本与 C++ 相关内容为工作 4g 模块使用打基础 (1) Lua 基础语法

安装

官网下载最新版本
使用 yum 指令的 linux 版本 可以参考这篇

Debin / ubuntu 以下是简述版本
1 确认安装 libreadline-dev & libncurses5-dev
2 进入 lua 解压包文件夹 执行
make linux test
3 执行 安装
sudo make install
4 测试
lua -v


lua 文件格式 类似 shell 等脚本语言(lua 的优势就是嵌入其它代码)
.lua 后缀
文件开头 #!/usr/local/bin/lua


1 基本语法
  1. print(“hello world!”)
  2. – 单行注释
  3. –[[
    多行注释
    ]]–
  4. Lua 标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的

mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal

  1. 默认变量都是全局的,删除全局变量只要赋值 nil; a = 10; a = nil; 局部变量 local 前缀即可
2 类型

1 nil 要加引号 print(type(X) == “nil”)
2 number 默认双精度型可修改(luaconf.h) 2 / 2.2 等都是 number 型
3 string 字符型 表示方式 ‘’ / “” / [[ ]] 都行 print(#“xx”) 计算长度 2
4 table 表格/数据用法类似(Map),{}; a = {}; a[“xx”] = “value”; xx = 10; a[xx] = 22;
for k, v in pairs(a) do print(k … “:” …v)
对表格索引
t[i]
t.i – 当索引为字符串类型时的一种简化写法
gettable_event(t,i) – 采用索引访问本质上是一个类似这样的函数调用

不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始
5 function 函数

function test(n) 
    if n == 0 then
        return 1
    else
        return n * test(n - 1)
    end
end
print(test(5))
test1 = test
print(test1(5))

匿名函数

function testFun(tab,fun)        
    for k ,v in pairs(tab) do               
        print(fun(k,v));        
    end
end

tab={key1="val1",key2="val2"};
testFun(tab,
function(key,val)--匿名函数       
    return key.."="..val;
end
 );

6 thread 线程
7 userdata 自定义类型


循环

while()
for
repeat until 类似 do while

while( true )
do  
    print("循环将永远执行下去")
end

判断

if ()
then
print();
else
print();
end


函数

着重讲一下
可变参数 function add(…)


模块
-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {} 
-- 定义一个常量
module.constant = "这是一个常量" 
-- 定义一个函数
function module.func1()    
    io.write("这是一个公有函数!\n")
end 

local function func2()   
    print("这是一个私有函数!")
end 
function module.func3()   
    func2()
end 
return module
调用模块 require("module")
local m = require("module")
print(m.constant)
m.func3()

C 包 与 LUA
local path = “xx.so”
local f = assert(loadlib(path, “xxxxxx”)) --没有打开库
f() --打开库
之后就可以用 require 加载 C 库


元表 就是对 table 进行内部操作

详见内容


协同程序(就是线程)

详见内容


发布了120 篇原创文章 · 获赞 27 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_24890953/article/details/102378735