linux打开lua后中文有乱码,总结Lua使用中遇到的小问题
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使用中遇到的小问题相关推荐
- windows下的文本文件在linux下查看,中文显示乱码
windows下的文本文件在linux下查看,中文显示乱码 伏心救赎 2013-03-05 14:37:37 581 收藏 分类专栏: 基于类linux的开发 </div></div ...
- java乱码base64,解决 JAVA WebSocket 解析 base64 后中文字符串乱码
解决 JAVA WebSocket 解析 base64 后中文字符串乱码 解决 JAVA WebSocket 解析 base64 后中文字符串乱码 春风如贵客,一到便繁华.各位看官先赞再看,养成好习惯 ...
- 解决linux服务器上matplotlib中文显示乱码问题
解决linux服务器上matplotlib中文显示乱码问题 参考文章: (1)解决linux服务器上matplotlib中文显示乱码问题 (2)https://www.cnblogs.com/Bell ...
- MATLAB打开代码,中文注释乱码的解决方法
MATLAB打开代码,中文注释乱码的解决方法 由于matlab版本不同,其编码方式也不同.这边给出两种方法可解决这些问题(我的电脑是win11,2018a版本的matlab) 1.用电脑自带的记事本打 ...
- NotePad 打开文件 出现中文汉字乱码 解决办法
NotePad 打开文件 出现中文汉字乱码 解决办法 欢迎关注:程序员财富自由之路 现象: 出现中文汉字乱码: 解决办法: 先别着急用notepad修改编码 1. 用windows系统自带记事本打开, ...
- linux sqlplus显示乱码,scrt访问linux,sqlplus查询中文显示乱码
scrt访问linux,sqlplus查询中文显示乱码 2019-04-28 scrt访问linux时候,默认语言LANG=en_US.UTF-8.oracle查询默认语言NLS_LANG=AMERI ...
- linux打开二进制文件后终端乱码处理
linux环境所有东西都是用文件表示,有时候我们会不经意打开二进制文件,导致整个乱码 恢复的话,大致有以下几种方法: 方法一: 盲打输入echo -e '\xf'并回车.与这个命令相对的是echo - ...
- 报表在linux下部署后中文变成小方块
在Linux系统部署皕杰报表后,出来的中文变成了□□□□,或者斜线单元格里的字变成了□□ 在Linux系统部署皕杰报表后,出来的中文变成了□□□□,或者斜线单元格里的字变成了□□□□,或者导出pd ...
- Linux下pager-taglib分页中文搜索乱码
[问题描述]本人平时在Windows编程部署,使用的pager-taglib-2.0.jar是maven自动下载的,如果分页的同时提供搜索框进行中文搜索没有问题. 后来,项目部署上线,环境是Unbun ...
最新文章
- 大创项目实施方案模板范文_27篇互联网电商创业计划书范文+34个电商行业商业计划书模板下载...
- 关于spring MVC中加载多个validator的方法。
- Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step(二)
- 对fgets的理解1
- 对广义表L=((a,b),(c,d),(e,f))执行操作tail(tail(L))的结果是 ()
- 《设计模式详解》创建型模式 - 工厂模式
- Intel 的20G 源代码和内部机密文档被泄漏
- SQL高手篇:精典SQL FAQ收藏
- CSS标签选择器(二)
- python从外部传入参数_Python学习杂记_8_从程序外部传参的办法sys.argv
- 第四章 平稳序列的拟合与预测
- 好系统U盘启动教您win7系统怎么安装其他语言
- 李阳和他的疯狂英语(r5笔记第46天)
- php去除emoji,php去除emoji表情
- 为知笔记登录提示“打开数据库失败”解决方法
- C语言如何计算程序运行时间
- 使用Selenium爬取网易云音乐的所有排行榜歌曲
- python 白噪声检验-python之时间序列分析(一)
- 利用elementUI里面的message做一个倒计时!简单实用
- C#实现的基于RFID射频卡的学校智能刷卡考勤系统
热门文章
- html中%3csvg%3e标签的使用,微信小程序:使用svg
- mysql left join第一个_MySQL 之 LEFT JOIN 避坑指南
- 万字详解Oracle架构、原理、进程,学会世间再无复杂架构
- 分而治之:Oracle 18c 及 12.2 分区新特性的 N 种优化实践(含PPT)
- 万字总结Keras深度学习中文文本分类
- 解析ThreadPoolExecutor类是如何保证线程池正确运行的
- 基于LiteOS Studio零成本学习LiteOS物联网操作系统
- 【论文笔记】一种有效攻击BERT等模型的方法
- 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
- WAF(NGINX)中502和504的区别