lua入门

1 起步

按照传统,我们首先用Lua实现一个”Hello World”程序:
#

print("Hello World")
如果你使用的是独立的Lua解释器,则运行程序的方法很简单:你只需将你的程序文件名传给解释器(通常名为lua)。比如,如果你将上面这个程序写入到一个名为hello.lua的文本文件中,然后通过如下命令行启动它:
#

prompt> lua hello.lua
下面是一个稍微复杂一点的例子,下面这个程序定义了一个函数来计算阶乘。它让用户输入一个数字,然后打印出它的阶乘。
#

-- defines a factorial function
#

function fact (n)
#

if n == 0 then
#

return 1
#

else
#

return n * fact(n-1)
#

end
#

end
#

print("enter a number:")
#

a = io.read("*number") -- 读入一个数字
#

print(fact(a))
如果你将Lua嵌入到一个应用程序中运行,比如CGILua 或者 IUPLua,你需要读一下相关的手册(或请教一下能人)去了解如果运行你的程序。不过,Lua还是Lua,无论以哪种方法使用,我们在这里看到的大多数东西都还是有效的。我们推荐你使用独立的Lua解释器(一个名为lua的程序)来运行你的第一个练习程序。

1.1 程序块

Lua执行的每一段代码,比如一个文件甚至交互模式下的一行指令,都可以称为是一个“程序块”。简单来说,“程序块”就是一组语句序列。

语句的结尾加分号的写法是可选的。一般来说,我只是在把多个Lua语句写在同一行的时候,才用分号间隔,当然,这是一个习惯问题。换行符同样可以用来分隔语句。举例来说,下面这四种写法都是正确的,而且等效。
#

a = 1
#

b = a*2
#

a = 1;
#

b = a*2;
#

a = 1 ; b = a*2
#

a = 1 b = a*2 -- 不推荐这种写法,不过确实可以这样写。
程序块可以简单到只有一条语句,像那个”Hello world”的例子,也可以是一组语句和函数的混合体,像前面的求阶乘的例子。你想让一个程序块有多大,它就可以有多大。因为Lua也被用作是一种“描述数据的语言”,所以,几兆字节尺寸的程序块并不鲜见。Lua解释器处理这些毫无问题。
除了将你的程序写进一个文件以外,你还可以使用Lua解释器提供的交互模式。如果你启动lua时不带任何参数,你就会看到这样的提示符:

#


Lua 5.0 Copyright (C) 1994-2003 Tecgraf, PUC-Rio
#

>
然后,你键入的任何指令(比如 print “Hello World”)会在你按下回车后被立即执行。如果想离开交互模式的解释器,只需要键入一个“文件结束符”(在Unix系统中是Ctrl- D,DOS/Windows中是Ctrl-z),或者调用OS库的退出函数(键入:os.exit() )
在交互模式下,Lua一般将每一行都看作是一个程序块。但是,如果它检测到这一行无法构成一个完整的程序块,它就会等待进一步的输入,直到其构成了完整的程序块。当Lua等待进一步的输入时,它会显示一个不同的提示符(一般是>>)。因此,你可以直接在交互模式下输入多行的定义式,就像那个求阶乘的factorial函数。当然,在一些情况下,将这些程序写入文件,再用Lua执行这个文件更方便一些。

你可以让通过 –l 参数让Lua解释器顺序地执行一组脚本程序。举例来说,如果你有一个文件a,里面只有一条语句:x=1,你还有一个文件b,里面也只有一条语句:print(x),则命令
#

promt> lua –la –lb
会依次运行a和b,并打印出“1”。( -l 参数实际上调用了 require 函数,这个函数会查找指定路径下的文件。所以,在前面那个例子中,如果你不写明a和b的路径,就无法正常运行。我们将在8.1节详细讨论require函数)

你可以使用 –i 参数告诉Lua解释器在执行完指定文件后,进入交互模式。比如:
#

prompt> lua -i -la -lb

将先执行a中的程序块,然后执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值