教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)(中文)(3)

来源:网络收集 时间:2026-09-07
导读: {x=-5, y=4}, WOW的LUA脚本入门 {x=0, y=4} } -- Print the color print(myPolygon[“color”]) -- Print it again using dot -- notation print(myPolygon.color) -- The points are accessible -- in myPolygon[1

{x=-5, y=4},

WOW的LUA脚本入门

{x=0, y=4}

}

-- Print the color

print(myPolygon[“color”])

-- Print it again using dot

-- notation

print(myPolygon.color)

-- The points are accessible

-- in myPolygon[1] to myPolygon[4]

-- Print the second point s x

-- coordinate

print(myPolygon[2].x)

程序说明

首先建立一个table, 与上一例不同的是,在table的constructor里面有{x=0,y=0},

这是什么意思呢? 这其实就是一个小table, 定义在了大table之内, 小table的

table名省略了.

最后一行myPolygon[2].x,就是大table里面小table的访问方式

.

NGACN

[cnarmory暂时无法使用]

快打伞

你发帖后被群众惨无人道的喷了。

变量的问题:

(1)lua似乎是不需要声明变量的,想用哪个变量那么用的时候直接赋值就可以了。根据赋值的类型那么变量就被自动定了类型了。 这样说对么? (当然,后面文章说到了这个例子:虽然这里i是一个整型量,Lua在处理的时候会自动转成字符串型,不需偶们费心。 -_-)

(2)

WOW的LUA脚本入门

文章里这样说:假如你要定义局部变量,则在第一次赋值的时候,需要用local说明。

那么我在写宏的时候经常直接赋值比如 mp=UnitMana("player")/UnitManaMax("player") ,那么这个mp就成了全局变量咯?

+++++++++++++++++++++++

逻辑运算的问题

(2)一般写宏的时候,and,or都有比较运算,所以还能理解,这里直接两个数值进行逻辑运算有点懵了,

没绕明白,比如说第一句就不太清楚,有false和nil的都清楚,因为给出了规则。楼主能解释一下么? (3)

a and b:如果a为false,则返回a;否则返回b

a or b:如果 a 为true,则返回a;否则返回b

这个规则怎么解释,还是说lua就是这样规定的没什么解释的

++++++++++++++++++++

结构的问题

(4)文章中说到了if...then....elseif....

可是现在写宏的时候很多人是if....then....if....then....if...这样嵌套的,也符合标准吧?

++++++++++++++++++

最后,谢谢楼主提供好文,,,,

NGACN

i miss you so much,that's true,,,,

1、没错,所有未经声明的变量都是全局的。。。。甚至包括你在function里定义的变量。我已经实验过,比如在一个宏里定义了一个变量a并赋值1,运行后,如果在另一个宏里也使用了变量a,宏里要是不重新赋值就调用的话,a的值就会还是你之前所使用的那个宏里赋的值1。

WOW的LUA脚本入门

但一般不用担心冲突,因为大多情况下,大多人在一个宏内使用一个新变量都会习惯重新赋值,一般不会引起太大的问题。但如果你是真正需要一些全局变量并能方便的识别他,可以这样,在宏中把作为局部变量的都用小写字母,要用做全局变量的用大写字母,因为Lua是严格区分大小写的,所以这样你就可以方便使用局部变量和全局变量了。

2、3、这个的确有点让人糊涂。。。我来这样解释把,其实你说的比较运算就是逻辑运算,都是一样。只是Lua扩大了and和or 的使用范围。

其实通常and和or所能使用的范围仅仅是布尔型的数值,所能得到的结果也是只有布尔型。即and和or只能对false和true进行运算,其结果也同样不是false就是true。运算情况如下:

false and true = false true and false= false

false and false = false true and true = true

false or true = true true or false = true

false or false = false true or true = true

但Lua扩大了and和or 所能运算的数据类型,为了使其也能运算其他类型的数据。所以才做出了这个方便的定义(当然,你说糊涂的定义也行)

a and b:如果a为false,则返回a;否则返回b

a or b:如果 a 为true,则返回a;否则返回b

现在我们可以用false和true替换a和b运算试试:

a=false b=true

false and true = false

false or true = true

a=true b=false

true and false = false

true or false = true

a=false b=false

false and false =false

false or false = false

a=true b=true

true and true = true

true or true =true

WOW的LUA脚本入门

看到了把,其实结果和我们之前正常的逻辑运算是一样的。Lua仅仅是扩大的and和or所能使用的范围而已。因为Lua本身对数据类型的定义没有苛刻的要求,所以她的运算也要能适应各种类型的数据才方便。(其实这也算不上什么解释,她就是这样的定义的,方便还是糊涂就是一念之间,哈哈)

3、当然符合标准啊,嵌套归嵌套的用法,elseif归elseif。这两种用法是不同的啊,虽然结果可能一样。但有些情况嵌套方便就用嵌套,elseif方便就用elseif罗。

NGACN

[cnarmory暂时无法使用]

快打伞

你发帖后被群众惨无人道的喷了。

下面是引用猪小小于2005-06-30 01:39发表的:

1、没错,所有未经声明的变量都是全局的。。。。甚至包括你在function里定义的变量。我已经实验过,比如在一个宏里定义了一个变量a并赋值1,运行后,如果在另一个宏里也使用了变量a,宏里要是不重新赋值就调用的话,a的值就会还是你之前所使用的那个宏里赋的值1。

但一般不用担心冲突,因为大多情况下,大多人在一个宏内使用一个新变量都会习惯重新赋值,一般不会引起太大的问题。但如果你是真正需要一些全局变量并能方便的识别他,可以这样,在宏中把作为局部变量的都用小写字母,要用做全局变量的用大写字母,因为Lua是严格区分大小写的,所以这样你就可以方便使用局部变量和全局变量了。

.......

false and true = false true and false= false

false and false = false true and true = true

false or true = true true or false = true

false or false = false true or true = true

其他问题都懂了,这个也明白了。

我一开始不懂的原因主要是被绕进去想Lua的既定法则是个什么东西

WOW的LUA脚本入门

后来一看上面的Quote部分(楼主的回答),就明白了,原来就是和普通的逻辑运算是一样的

简而言之,

and的成立条件必须是两个同时成立(也就是说两个给定条件都是True),

那么里面有一个false当然结果肯定就是false了

or的成立条件是两个条件里面至少有一个成立(也就是说至少要有一个True),

那么排除全是false的情况其他情况自然都成立

原来就是和其他语言里一样的逻辑运算

我也可以吃饭去了,

BTW:感谢楼主,非常热心,我的每一个 …… 此处隐藏:2851字,全部文档内容请下载后查看。喜欢就下载吧 ……

Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)(中文)(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/91308.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)