前言: 发现了吧,数据结构还有个 Function 没讲。这个我们会在后面单独拿出来精讲。
变量与函数
一下是Lua的官方解释
编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。
再来解释下变量的作用。
假设我们做好了一个游戏,创建了个人物,所以我们需要富裕它生命
life = 100
假如人物受伤了,我们就该扣除它的生命
life = 100
life = life - 10
哈,发现问题了吧。
程序运行后使Life为100,跳到下一行后立即-10变成90.也就是无论什么时候life都为90.
什么?Life一来就90,还怎么玩?
那么假如我们这样写呢
life = 100
if (被打到了) then
life = life - 10
end
这里用到了If do
如果你上过初中的话你肯定知道If是如果的意思,then是然后的意思。那么上面的程序就可以翻译为 如果被打到了,生命-10(end 代表语句结束)
没毛病吧,但是,如果我们要改变扣血的大小。我要让它扣50.
然而这段if在5000行代码的某一行,life这个变量也被引用了5000词。你去哪里改。
[你可能会说 我找,慢慢找,直到找到这句┏(`ー´)┛┏(^0^)┛:]
-_-#
这时我们便可以引用函数这一看似高深的东西
个人认为函数就如同一个盒子,里面装着各种独立的东西,变量,常量,别的盒子……
我们可以这样来创造一个函数
function 函数名(x)
函数体
end
* 函数名是你给函数取的名字
* 函数体就是函数内要进行的操作
* "x"为函数的参数
* 函数最后部分一定加end
所以我们可以将代码这样改:
function life_del()
life = life - 10
end
function game()
a = 1
life = 100
if a == 1 then
life_del()
end
end
game()
哈,是不是清晰多了啊。
来个实战┏(^0^)┛
「创建一个函数,比较两个参数的大小,并且输出最大的那个数」
我们先创建这个函数,因为是比较两个数字,所以我们让它带两个参数。
function bigger(num1, num2)
开始比较
如果num1比num2大, 那么输出num1
否则(num2比num1大或者num1等于num2)输出num2
<觉得自己讲流程控制和循环可能讲不好,所以这一类的教程给出地址>
http://www.runoob.com/lua/lua-loops.html
http://www.runoob.com/lua/lua-decision-making.html
所以这样写
if (num1 > num2) then
print(num1)
else
print(num2)
end
哈
最终的代码如下
function bigger(num1, num2)
if (num1 > num2) then
print(num1)
else
print(num2)
end
end
bigger(2, 4)
bigger(5, 5)
看看看的明白不┏(`ー´)┛