lua脚本文档中文翻译(基础)

谷歌翻译分析和实现(lua版) 由于实际情况需要,最近需要用到谷歌翻译部分,直接使用网页web的url请求就是最好的选择,下来先做原理的分析。 一、原理分析 1、选择任意可以F12打开开发者模式的浏览器; 2、找到谷歌翻译URL的地址:https://translate.google.cn 进入谷歌翻译的主页,然后去尝试翻译一个中文 进入浏览器的F12,分析浏览器发生哪些url的请求,我们分析到有不少的url请求,我们去寻找有返回翻译结果的URL请求 那么这个url就是有效的,有返回原文和译文的结果,... 阅读详情

介绍

Lua读作“鹿啊”,是一种据创作者说的类Pascal脚本语言。 巴西人做的,其名字”lua”是西班牙语的月亮。 Lua是目前在游戏工业中用得最多的脚本语言。 优点是执行速度快。

基本概念

一段脚本就是一组命令和数据。

命令的术语叫作 语句,一段语句可以用 do ... end 括起来构成一个语句块。 语句块是一个相对独立的块,逻辑上等同于一条语句。

脚本中两个减号“–”后面到行末的内容为 注释,脚本解释器会忽略它们。 多行注释为“– ”打头直到匹配的“”。

标识符 是字母或下划线打头由字母、下划线和数字组成的标识,用作变量名或函数名。

数据

数据分不同的类型。

Lua支持的类型有:

nil:空类型,即没有数据
boolean:布尔类型,即真(true)或假(false)
number:数值类型,如123,24.5,1.23e-12 (即1.23乘10的-12次方)
string:字符串,即一段文字
table:数据表类型,即键-值数据对的集合
function:函数,即一段命令,在脚本中命令也可作为数据操作
userdata:用户数据,扩展的数据类型
thread:线程类型

保存数据的东西叫变量。变量分全局变量和局部变量。 全局变量一直存在,局部变量只执行到它所在的局部才存在。 应该尽量使用局部变量,以避免逻辑错误。

例:

    local x = 10        -- 局部变量x保存数值10
    local title = "你好" -- 局部变量title保存字符串"你好"
    local dead = true   -- 局部变量dead保存真

 
    x = 10                -- 全局变量x保存10
    do                    -- 语句块
      local x = x         -- 局部变量x被赋予全局变量x的值,只在块内存在
      print(x)            --> 显示10
      x = x+1
      do                  -- 又一个内部语句块
           local x = x+1     -- 又一个局部变量只在该块内存在
        print(x)          --> 显示12
      end
      print(x)            --> 显示11
    end
    print(x)              --> 显示10  全局变量x的值

字符串

字符串数据使用引号括起来以区别于其他符号,注意是英文引号。

如:

    "Hello, world!"

字符串中,用“/””表示引号,用“/’”表示单引号,用“//”表示“/”,用“/n”表示换行。

表达式

表达式 就是算式概念的扩展。

数学表达式的运算符有 +, -, * (乘), / (除), ^ (指数),- (负号)
如果操作数是字符串类型,并可以被转换成数值,则将自动转换成数值

关系运算符返回布尔值true或false,有:== (等于),~= (不等于),< (小于),> (大于),<= (小于等于),>= (大于等于)
注意,对数值类型不要用==比较,应判断两数的差是否小于一个足够小的数,否则对有些数看起来相等却不相等。0 除外。

逻辑运算符包括:and (和,并且), or (或者),not (非,不)
逻辑运算的操作数一定要是布尔类型或nil,nil表示空,被当作false处理。使用其他类型的操作数不会报错,因为有其特定的功能,但坚决不推荐使用。

字符串连接运算符:.. (取得两个字符串连接后的字符串)
如果操作数是数值型,则自动转换为字符串

优先级,从底到高:

or
and
<     >     <=    >=    ~=    ==
..
+     -
*     /
not   - (负号)
^

..和^是右结合,就是说 2^2^3 == 2^(2^3)。

例:

hp < 10 and not player.frozen -- hp小于10 并且 玩家没有被冰冻 时为真

流程控制语句

while 表达式 do
  语句块
end

如果表达式的结果为true,则执行语句块,到end后返回while再循环。 如果表达式的结果为false,则跳过语句块执行end后的语句。

repeat
  语句块
until 表达式

先执行语句块,再判断表达式是否为true,是则继续向下执行,否则返回repeat重复。

循环内可用break语句跳出包含该break的一层循环。

if 表达式 then
  语句块
else
  语句块
end

 
if 表达式 then
  语句块
elseif 表达式 then
  语句块
else
  语句块
end

根据表达式的结构选择执行。

for 循环变量 = 初值, 终值 do
  语句块
end

 
for 循环变量 = 初值, 终值,每次的增量 do
  语句块
end

绝对不要在for语句块中修改循环变量。

函数

函数即可被重复调用的语句块。

function 函数名(参数列表)
  语句块
end

参数列表为用逗号分隔的变量名列表,当执行到函数体内部时,他们就是函数体内的局部变量, 并且已用调用时指定的实参赋值。参数列表可以为空。

函数可以返回值给调用者,使用

return 返回值

执行return之后将从函数返回调用者的下一条语句继续执行。

例:

function max(a, b)
  if a > b then
    return a
  else
    return b
end

 
local c = max(10, 20)   -- c == 20

调用函数时使用

函数名(参数列表) 或 函数名()

注意括号必须加上,这样才表示函数调用,执行函数内的语句。 如果不加则表示一个函数类型的值。*

当需要返回多个值时,使用

return 返回值1,返回值2,...

调用时用多个变量接收返回值,例:

local v1, v2, v3
v1, v2, v3 = a_multi_return_value_funtion()

注意尽量不要使用多返回值,因为脚本解释器不检查变量的个数是否匹配,多则丢弃,少则置nil,容易倒致错误而不易发现。

数据表

数据表是脚本系统的核心数据结构,本质上是从键到值的映射。 其它的数据结构都由数据表表示。

如数组,以从1开始的整数为键索引:

local arr = {10, 100, 1000} -- arr[1] = 10, arr[2] = 100, arr[3] = 1000

词典,以字符串索引:

local dict = {"pig" = "猪", "dog" = "狗"} -- dict["pig"] = "猪" ……

对象,以属性(即对对象的描述)名索引:

local pig = {legs = 4, tail = 1, name = "猪"} -- pig.legs = 4 ……

作为对象使用时,字符串作键、函数作值即表示对象的方法(即对对象的操作),调用方法的例子:

deamon.attack(deamon, target, strength)

也可简写为

deamon:attack(target, strength)

即是说因为第一个参数也是数据表,所以将点换成冒号并省掉第一个参数。

使用数据表的for语句

for 循环变量i, 循环变量v in ipairs(数据表t) do
  语句块
end

i是整数键,v是值, 循环将逐次得到 (i = 1, v = t[1]), (i = 2, v = t[2]), ……

for 循环变量k, 循环变量v in pairs(数据表t) do
  语句块
end

k是键,v是值, 循环将逐次得到数据表中的每一个键-值对。

绝对不要在for语句块中修改循环变量。

常用函数

assert(v [, message]) – 用于调试,断言v一定为true,否则说明有逻辑错误,中断运行并显示message的内容。

tostring(e) – 将e转换成字符串

tonumber(e [, base])– 将e转换成数值,如果指定base,则按指定的进制转换

next(table [, index]) – 取数据表中index的下一个索引键;如果省略index则返回第一个;如果index为最后一个则返回nil。

error(message [, level]) – 终止执行并给出错误信息

数据表函数

table.sort(table [, comp]) – 将数据表元素按值排序。如果指定comp比较函数,则使用comp函数进行比较。comp应有两个参数,当a

table.insert(table, [pos,] value) – 在table的pos索引位置插入value。

table.remove(table [, pos]) – 删除table中索引为pos的元素,省略pos时为最后一个元素。

table.foreachi(table, f) – 对table中每一个值,调用f函数,参数为整数索引和元素值

table.foreach(table, f) – 对table中每一个值,调用f函数,参数为键和值

数学库函数

math.abs     math.acos    math.asin    math.atan    math.atan2
math.ceil    math.cos     math.deg     math.exp     math.floor
math.log     math.log10   math.max     math.min     math.mod
math.pow     math.rad     math.sin     math.sqrt    math.tan
math.frexp   math.ldexp   math.random  math.randomseed

类型

Lua是动态类型语言,不需要人为指明变量类型,脚本解释器会自动判断变量类型。 简单的说,给变量赋什么类型的值,变量就变成什么类型。

函数 type(var) 返回变量var的类型名。

注意:不同类型的变量用“==”比较总是为 false,false == nil 也是 false。 为避免不易查出的错误,不要比较不同类型的变量。

引用类型

数据表类型(table),函数类型(function),用户定义类型(userdata) 都是引用类型。 即他们是对内容的引用,多个引用类型的变量可以引用同一个内容。

例:

local table1 = {1, 2, 3, 4}
   local table2 = table1             -- table1和table2都引用同一个数据表
   table2[2] = 99
   print(table1[2])                     -- table1[2] = 99

如果引用类型没有提供自己的==、~=运算符操作,则执行缺省的比较运算,即判断两引用是否指向同一内容; 注意不是比较内容是否一致。

例:

{} == {}    -- 永远为false,因为创建了两个空数据表,它们不是同一个数据表。 

变量

Lua处理局部变量要比处理全局变量快几倍,所以尽量使用局部变量。 在所有函数外部即全局也可声明局部变量,差别是全局变量一直存在, 而声明在全局的局部变量只在该模块的生存期存在,并只能被声明它的模块访问。

使用全局变量有难以发现的错误,例:

g_DeamonCount = 10
   ...
   g_DeamonCuont = 20    -- 拼写错误,o和u颠倒了,但不会被脚本解释器发现,
            -- 因为一个新的全局变量被创建了

Lua正在加入 global 关键字以解决此问题。

读取未赋值的变量也不会报错,所以最好声明变量时赋个缺省值。

函数嵌套

函数既是可执行的命令,也是可使用的数据,所以函数满足变量的作用域规则,即只在声明它的块内存在,例:

function foo()
     ...
   end
do
     function foo()
       ...
     end
     foo()                   -- 调用do...end内的foo()
   end
   foo()               -- 调用全局的foo()

即 function foo()..end 等同于 local foo = function()...end

一些库函数

dofile(文件名) – 执行指定文件中的脚本

print(e1, e2, ...) – 显示变量或常量的值

math.abs(v) – 取v的绝对值

math.acos(v), math.asin(v) – 反余弦,反正弦

math.atan(y/x), math.atan2(y, x) – 反正切,前者只适用于第一象限,后者可用于所有象限

math.floor(v) – 取小于等于v的最大整数

math.ceil(v) – 取大于等于v的最小整数

math.cos(v), math.sin(v), math.tan(v) – 取余弦,正弦,正切

math.deg(v) – 弧度变角度

math, rad(v) – 角度变弧度

math.exp(v) – 取e的v次幂

math.log(v) – 取以e为底的对数(自然对数)

math.log10(v) – 取以10为底的对数

math.pow(x, y) – 即x的y次幂

math.min(v1, v2, ...), math.max(v1, v2, ...) – 取最小的,最大的

math.mod(v1, v2) – 取v1 / v2的余数

math.sqrt(v) – 取v的平方根

math.random() – 取0到1的随机小数

math.random(upper) – 取1到upper的随机整数

math.random(lower, upper) – 取lower到upper的随机整数

math.randomseed(seed) – 置随机数种子

写游戏脚本的注意事项

尽量使用本系列文档中提到的用法:Lua本身语法很松,用法很灵活,在看其它文档和样例时会有在此没有提到的语法内容, 这些语法内容不是必要的,但却容易导致错误或带来过大的复杂性。 例如用 (test) and v1 or v2 来模拟C语言的三元表达式,我们不推荐使用。

来源:http://justjavac.com/other/2012/04/16/lua-document-basic/

Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来从 Lua语言基本介绍及下载安装 开始学习吧! 阅读详情

相关推荐

Lua 5.1中文编程手册:全面指南与实践

本文还有配套的精品资源,点击获取 简介:Lua是一种轻量级脚本语言,常嵌入到应用程序中提供扩展性。本手册是Lua 5.1版本的官方文档中文翻译,涵盖了语法、特性到使用方法的全面指南。内容包括基础语法、数据类型、表、控制结构、函数、模块、元编程、错误处理、C接口、垃圾收集、线程及标准库等关键概念。此外,还包含如何解压和使用手册的说明。手册适用于各级别开发者,并为多个应用领域提...

weixin_35414484的博客 2722

Logitech G HUB Lua API 概述和参考

如果在播放另一个脚本宏时调用该函数,则不会执行任何操作。如果在播放同一脚本宏时调用该函数,则该宏将排队。G13游戏面板有一个模拟操纵杆,可以为其分配鼠标功能鼠标的速度可以通过设置中的profiler选项面板进行调整窗口,或者通过Lua脚本语言。注意:对于模拟的,随后立即调用IsModifierPressed或IsKeyLockOn修改器或锁定键可能会返回以前的状态。这将需要几毫秒要完成的操作。如果在播放另一个脚本宏时调用该函数,则不会执行任何操作。如果在播放另一个脚本宏时调用该函数,则不会执行任何操作。

csdn9228的博客 3万+

全面Lua编程开发资源合集

Lua是一种轻量级的脚本语言,广泛应用于嵌入应用程序中,提供灵活的扩展和定制功能。它由Roberto Ierusalimschy, Waldemar Celes和Luiz Henrique de Figueiredo于1993年开发,其名字在葡萄牙语中意为“月亮”。Lua的设计目标是简单、小巧且易于嵌入,这使得它成为游戏开发、嵌入式系统和Web应用等多种领域的首选脚本语言。Lua的语法简洁,具有很好的可读性,同时其运行效率高,能够有效地处理字符串和表操作。

weixin_33750664的博客 860

LUA脚本文档中文翻译(基础)

LUA脚本文档中文翻译(基础) 介绍 Lua读作“鹿啊”,是一种据创作者说的类Pascal脚本语言。巴西人做的,其名字"lua"是西班牙语的月亮。Lua是目前在游戏工业中用得最多的脚本语言。优点是执行速度快。 基本概念 一段脚本就是一组命令和数据。命令的术语叫作语句,一段语句可以用do ... end括起来构成一个语句块。语句块是一个相对独立的块,逻辑上等同于一条语句。 脚本中两个减号“--”后面

Dev in Nightmare 7461

罗技脚本编程G-series Lua API 参考文档(中文版)

罗技脚本编程G-series Lua API 参考文档(中文版),主要是用在罗技G系列的鼠标和键盘的宏编程,实用性比较高,大家互相交流学习!

G-series Lua API 参考文档.zip

G-series Lua API 参考文档

Lua脚本做游戏外挂

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34168880的博客 2万+

LUA 编程指南中文版

Programming_In_Lua 中文版,想学习lua语言的朋友可以下载下来学习。

Redis中的Lua脚本怎么玩

Lua脚本在Redis中的简单使用语法

zzf1233的博客 609

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1724

避开这5个坑!ADNI数据库下载实操经验分享(含断点续传方案)

本文分享了ADNI数据库下载的5个常见陷阱及解决方案,包括高级搜索策略优化、断点续传技巧和数据完整性验证。特别针对大文件下载中断问题,提供了wget断点续传和分卷下载的实操方法,帮助研究者高效获取神经影像数据,避免重复下载和时间浪费。

git9versioner的博客 373

探索 `nvim-lua-guide-zh`:Neovim Lua 编程指南的中文版

探索 nvim-lua-guide-zh:Neovim Lua 编程指南的中文版 nvim-lua-guide-zh项目地址:https://gitcode.com/gh_mirrors/nv/nvim-lua-guide-zh 项目简介 在编程领域,效率和可维护性是关键,这在编辑器选择上也显得尤为重要。 则是一个将原始的英文版 nvim-lua-guide 翻译为中文的项目,旨在帮助中国区的 ...

gitblog_00033的博客 889

Uni-App推送踩坑实录:从云函数URL化到后台推送失效,我都经历了什么

本文详细记录了Uni-App开发者在接入uni-push 2.0时遇到的推送失效问题,从云函数URL化到后台推送失效的完整排查过程。通过系统化分析和与官方沟通,最终找到解决方案,并分享了预防措施与最佳实践,帮助开发者避免类似问题。

weixin_42552716的博客 485

Lua教程

manual.luaer.cn lua在线手册 book.luaer.cn lua在线lua学习教程 lua参考手册Lua参考手册的中文翻译(云风翻译版本) 关于Lua的标库,你可以看看官方文档:string, table,math,io,os。 http://www.jb51.net/article/55394.htm

yang889999888的博客 619

操作系统头歌 课后作业3.3.2:进程的调度

请问:从 6 号进程刚创建完 7 号进程开始,在接下来的 9 次进程调度中,每次调度时,6 号和 7 号进程的剩余时间片是多少?请问:从 6 号进程刚创建完 7 号进程开始,在接下来的 9 次进程调度中,每次调度时,6 号和 7 号进程的剩余时间片是多少?根据相关知识回答当程序 01.c 运行时(在版本 0 内核中),会在父子两个进程(假设分别为 6 号和 7 号进程)中分别输出字符串。当程序 01.c 运行时(在版本 0 内核中),会在父子两个进程(假设分别为 6 号和 7 号进程)中分别输出字符串。

weixin_73255571的博客 4703

S7-200SMART 中如何实现单按钮启停功能(两种方法)?

S7-200SMART 中如何实现单按钮启停功能(两种方法),Toggle库指令,状态翻转

Robot_PLC_HMI_Automation 1万+

Lua使用者

突然想学习一点Lua的知识,以下内容从《Programming in Lua》中文翻译文档中拷贝。《Programming in Lua》的翻译由www.luachina.net完成。贴在这里,当作笔记。Lua使用者分为三大类:使用Lua嵌入到其他应用中的、独立使用Lua的、将Lua和C混合使用的。第一:很多人使用Lua嵌入在应用程序,比如CGILua(搭建动态网页)、LuaOrb(访问C

asmc51的专栏 4380

华为Ascend C算子开发能力认证(中级)(个人记录,有完整代码,已通过认证,仅供参考)

本文介绍了在昇腾NPU环境下实现Sigmoid算子的完整流程。首先需要在华为云ModelArts-Notebook或开发者套件上搭建环境,要求CANN版本为8.0.0.beta1。主要内容包括:1)实现SigmoidCustom算子的kernel侧核函数代码;2)完成host侧Tiling结构体实现;3)支持Float16数据类型。代码实现部分详细展示了核函数计算流程、数据拷贝和牛顿迭代优化方法。最后介绍了编译部署流程,包括环境配置、代码上传、编译执行等步骤,并提供了提交规范说明。该实现通过调用Ascend

qq_73044452的博客 1107

Lua+openresty学习资料

Lua学习资料 Lua是一个强大的、快速、轻量级、可嵌入的脚本语言。     Lua结合了简单的程序语法和功能强大的数据结构描述基于关联数组和可扩展的语义。Lua是动态类型的,解释字节码的一个基于寄存器的虚拟机运行,并与增量垃圾收集自动内存管理,使它适合配置脚本,快速原型。 lua官方网站http://www.lua.org lua5.3官方参考手册http://www.lua.org...

github_zwl的博客 567

大数据领域数据产品的团队激励与绩效管理

在大数据领域,数据产品的成功离不开高效协作的团队。团队激励与绩效管理的目的在于激发团队成员的工作热情和创造力,提高工作效率和质量,确保数据产品能够按时、高质量地交付。本文章的范围涵盖了大数据领域数据产品团队激励与绩效管理的各个方面,包括激励机制的设计、绩效评估的方法、团队沟通与协作等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确相关概念的定义和相互关系;接着讲解核心算法原理和具体操作步骤,为团队激励与绩效管理提供理论支持和实践指导;然后分析数学模型和公式,帮助读者深入理解绩效评估的原理;

Java大师兄的博客 1018

Python爬虫实战教程:如何高效爬取税务局通知通告

税务局发布的通知通告包含政策法规、办税指南、公告信息等,是纳税人、企业合规经营的重要参考。官网发布频率高,手动查看不便,自动爬取并保存,方便信息及时掌握及历史数据归档。本文以合法合规的方式示范,建议实际应用前确认目标网站允许爬取的范围和方式。建议使用pandas进行数据清洗,如去重、空值处理等。对于研究税务政策、进行大数据分析、搭建行业信息平台,爬取税务局通知通告信息尤为关键。公告列表以分页形式展现,包含标题、发布时间和详情页链接。进行政策趋势图、发布频率统计等可视化。爬取公开数据时,务必遵守网站的。

2201_76125261的博客 1780

lua的更新文档(翻译中)

 这里是Lua 4.0 版本3.2到4.0之间的改变---------------------------语言设计:+新语句:break和for语句+对全局变量的全局处理:全局变量将都放置到一个Lua table中+改进错误信息+no more $debug: full speed *and* full debug information+新的read

13:07 565

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Express.js 中文入门指引手册
下一篇: 26个提升java性能需要注意的地方
迷渡
迷渡 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄19年 2405粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值