Lua极简入门(六)——函数定义
2019-10-23 本文已影响0人
李小磊_0867
对于Lua,定义个函数,非常简单。只需要使用function
语句,接下来需要明确函数名、括号,参数列表,最后以end
结尾,并在括号
与end
之间编写代码块,即可完成一个函数的定义。当有返回值时,采用return
语句;和其他语言类似,也可以使用return
结束一个函数的执行。下述为函数定义样例。
function funName(paramsList...)
<代码块>
end
对于Lua中,如果在某些地方要提前结束函数执行,也是使用return
,但稍微有些区别,确切的说是使用do return end
语句:
function show(t)
print("hello")
if t == 1 then
do return end
end
print("lua")
return
end
show(2)
-->> hello
-->> lua
show(1)
-->> hello
上面的return
其实是包含在了一个do...end
代码块中,这种结构的代码块可以包含任意行代码,其也有作用范围,和普通的单行代码不同,包围在该块内的代码,会在end
结束后,统一执行。
function test(a)
ret = 1
do
local x = 2 * a
local y = 4 * a + 10
b = x + y
end
ret = b * 2
print(x, y, b) -- x,y属于do end中的本地变量,结束后,将不会存在, b非本地变量,可以使用
return ret
end
print(test(2))
-->> nil nil 22
-->> 44
当将一个函数保存为文件后,如,将一个add
函数(实现两个数值相加)保存为hello.lua
,在交互控制台使用该方法,操作如下:
function add(a, b)
return a + b
end
print("hello lua")
-- 上述函数保存为hello.lua
-->> dofile([[c:/Program Files/lua/hello.lua]])
-->> hello lua
-->> add(1,2)
-->> 3

dofile 加载程序库函数,可以载入其他Lua程序,使得在当前窗口可用;同时dofile会执行载入的Lua文件。
loadfile 只编译,不运行。该函数只会载入指定的文件,编译代码,但不会执行。
