Lua可以被C/C++ 代码调用,反过来也可以调用C/C++的函数,这使得Lua被广泛应用。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。Lua在目前解释型脚本引擎中,速度是最快的,这决定了Lua嵌入式脚本的最佳选择。文章列举lua使用中遇到的小问题,做个汇总。

if判断

lua把 nil 和false 视为“假”,其他都为“真”

local变量声明

local var1=1,var2

以上 ,var1和var2的作用域不同,var1是所在作用域的变量,var2可能是全局变量。实际上述命令解释后为 var1 取 "1,var2" 组成的值第一个值,类似 local var1 = ...

正确的写法是:

local  var1, var2=1

table是否为空

if a == {} then

结果是false,这是一个逻辑错误,实际比较table a的内存地址和一个匿名table的是否相同

正确的写法是:

if next(a) == nil then

多个变量赋值

name,name = 1,2

那name等于多少呢?

实际上name值为1,可以写个小例子 a,b = 2,3,4打印汇编码就可以看到了。 方法:luac -l test.lua

table的key规则

t[name]与t["name"], t.name

第一种和后两种是不同的,第一种会根据取name的值做key,后两种以 "name"做key。这种情况还有:

t = {[name] = 1}

t = {name = 1}

t = {["name"] = 1}

table引用问题

将一个table复制给另外一个table,修改这个新的table值会影响原来的table,但通过clone可以改变这一行为。

-- 下面的代码,t2 是 t1 的引用,修改 t2 的属性时,t1 的内容也会发生变化

local t1 = {a = 1, b = 2}

local t2 = t1

t2.b = 3    -- t1 = {a = 1, b = 3}

-- clone() 返回 t1 的副本,修改 t2 不会影响 t1

local t1 = {a = 1, b = 2}

local t2 = clone(t1)

t2.b = 3    -- t1 = {a = 1, b = 2}

这里也补充一个深度复制的函数:

function table.deepcopy(object)

local lookup_table = {}

local function _copy(object)

if type(object) ~= "table" then

return object

elseif lookup_table[object] then

return lookup_table[object]

end

local new_table = {}

lookup_table[object] = new_table

for index, value in pairs(object) do

new_table[_copy(index)] = _copy(value)

end

return setmetatable(new_table, getmetatable(object))

end

return _copy(object)

end

函数返回值

> function f123() return 1, 2, 3 end

> function f456() return 4, 5, 6 end

> print(f123(), f456())

1      4      5      6

> print(f456(), f123())

4      1      2      3

> print(f456())

4      5      6

> print(f456(),1)

4      1

如果函数不是处于列的最后一个,只返回一个值

Lua 的详细介绍:请点这里

Lua 的下载地址:请点这里

linux打开lua后中文有乱码,总结Lua使用中遇到的小问题相关推荐

  1. windows下的文本文件在linux下查看,中文显示乱码

    windows下的文本文件在linux下查看,中文显示乱码 伏心救赎 2013-03-05 14:37:37 581 收藏 分类专栏: 基于类linux的开发 </div></div ...

  2. java乱码base64,解决 JAVA WebSocket 解析 base64 后中文字符串乱码

    解决 JAVA WebSocket 解析 base64 后中文字符串乱码 解决 JAVA WebSocket 解析 base64 后中文字符串乱码 春风如贵客,一到便繁华.各位看官先赞再看,养成好习惯 ...

  3. 解决linux服务器上matplotlib中文显示乱码问题

    解决linux服务器上matplotlib中文显示乱码问题 参考文章: (1)解决linux服务器上matplotlib中文显示乱码问题 (2)https://www.cnblogs.com/Bell ...

  4. MATLAB打开代码,中文注释乱码的解决方法

    MATLAB打开代码,中文注释乱码的解决方法 由于matlab版本不同,其编码方式也不同.这边给出两种方法可解决这些问题(我的电脑是win11,2018a版本的matlab) 1.用电脑自带的记事本打 ...

  5. NotePad 打开文件 出现中文汉字乱码 解决办法

    NotePad 打开文件 出现中文汉字乱码 解决办法 欢迎关注:程序员财富自由之路 现象: 出现中文汉字乱码: 解决办法: 先别着急用notepad修改编码 1. 用windows系统自带记事本打开, ...

  6. linux sqlplus显示乱码,scrt访问linux,sqlplus查询中文显示乱码

    scrt访问linux,sqlplus查询中文显示乱码 2019-04-28 scrt访问linux时候,默认语言LANG=en_US.UTF-8.oracle查询默认语言NLS_LANG=AMERI ...

  7. linux打开二进制文件后终端乱码处理

    linux环境所有东西都是用文件表示,有时候我们会不经意打开二进制文件,导致整个乱码 恢复的话,大致有以下几种方法: 方法一: 盲打输入echo -e '\xf'并回车.与这个命令相对的是echo - ...

  8. 报表在linux下部署后中文变成小方块

    在Linux系统部署皕杰报表后,出来的中文变成了□□□□,或者斜线单元格里的字变成了□□ ​​在Linux系统部署皕杰报表后,出来的中文变成了□□□□,或者斜线单元格里的字变成了□□□□,或者导出pd ...

  9. Linux下pager-taglib分页中文搜索乱码

    [问题描述]本人平时在Windows编程部署,使用的pager-taglib-2.0.jar是maven自动下载的,如果分页的同时提供搜索框进行中文搜索没有问题. 后来,项目部署上线,环境是Unbun ...

最新文章

  1. reddit android app,reddit安卓版app
  2. Nginx负载均衡配置实例详解(转)
  3. R 语言数据读取与存储
  4. metadata model entry in /IWFND/CL_MED_MDL_SVC_GRP
  5. 7-237 有理数加法 (15 分)
  6. Nginx、Apache工作原理以及nginx为何比Apache高效
  7. python的shutil模块是内置的_python内置模块~shutil
  8. 打破信息茧房-我主动获取信息的方法 -#3
  9. 解决VMware卸载后再安装出现的问题
  10. 快恢复二极管工作原理、反向恢复时间详解
  11. JAVA家教管理系统毕业设计 开题报告
  12. BeautifulSoup爬取豆瓣电影top250信息
  13. 史上最简单的springcloud微服务入门实例,开箱即用,工资翻倍不是梦
  14. 使用浏览器访问服务器端页面
  15. 手机APP开发之MIT Appinventor详细实战教程(十三),云服务器的数据遇到的问题和解决的方法,以及网页客户端的详细使用方法,WIFI通信,数据获取在one net平台的相关应用
  16. 【附源码】计算机毕业设计JAVA东理咨询交流论坛
  17. 简阳市简阳中学2021年高考成绩查询,四川省简阳中学2021年招生录取分数线
  18. 论文浅尝 | MISC:融合COMET的混合策略模型进行情感支持对话
  19. git 配置ssh 秘钥
  20. flutter 设置背景图片

热门文章

  1. Tensorflow——会话
  2. mysql 4升级,MySQL_Sql_打怪升级_进阶篇_进阶4:常见函数
  3. 实现贝叶斯分类器_从头开始在Python中实现高斯朴素贝叶斯
  4. 7天4场直播,涵盖DBA职业发展必备软实力、Oracle和MySQL技术等
  5. 两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引
  6. 圣诞快乐:Oracle Database 19c 的10大新特性一览
  7. 填坑总结:python内存泄漏排查小技巧
  8. 队列Queue:任务间的消息读写,安排起来~
  9. 如何快速准备高质量的AI数据?
  10. 技巧收藏|10个JavaScript常用数组操作方法