Lua  - 讨论区

标题:【Lua101】开始热身——语法约定和命令行方式

2011年02月12日 星期六 15:51

话说看文字性的定义和注意事项最无聊了,所以就来大朵大朵的摘抄吧。

 

先来热身一下吧!

进入和退出交互环境

在命令行中输入lua回车就会以交互模式运行lua,键入文件结束符可以退出交互模式(Ctrl-D in Unix, Ctrl-Z in DOS/Windows),或者调用OS库的os.exit()函数也可以退出。

 

来看两个例子

如大多数语言一样,首先要写的就是著名的hello, world

在lua环境命令行输入 

print("hello, world")

很眼熟吧,居然和Python3.x语法一样。

如果是把print("hello, world")保存在lua文件中,比如说使用lua filename.lua

 

再来看另外一个有点小复杂的例子,例子中首先定义一个是计算阶乘的函数,然后根据用户输入的数字输出结果。感叹一下,神似python那!

-- 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")      -- read a number

print(fact(a)

 

Chunk是什么玩意?

Chunk是一系列语句,Lua执行的每一块语句(可以是一系列语句的组合,还可以是函数,Chunk可以很大,在Lua中几个MByte的Chunk是很常见的),比如一个文件或者交互模式下的每一行都是一个Chunk。

在交互模式下,Lua通常把每一个行当作一个Chunk,但如果Lua一行不是一个完整的Chunk时,他会等待继续输入直到得到一个完整的Chunk.在Lua等待续行时,显示不同的提示符(一般是>>)。

可以通过指定参数让Lua执行一系列Chunk。例如:假定一个文件a内有单个语句x=1;另一个文件b有语句print(x)

 lua -la -lb

命令首先在一个Chunk内先运行a然后运行b。

运行完Chunk后进入交互模式则需要加上 -i 选项,如 lua -i -la -lb

 

除此之外,还可以使用dofile函数,在交互模式下:

dofile("test.lua")

然后就可以引用其中的函数等等。

-i和dofile很方便调试、测试代码。

 

语法约定

标示符:字母(letter)或者下划线开头的字母、下划线、数字序列.最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。Lua中,letter的含义是依赖于本地环境的。

保留字 :以下字符为Lua的保留字,不能当作标识符。

and        break      do         else         elseif

end        false        for        function   if

in           local        nil         not          or

repeat    return     then      true         until

while

注意:Lua是大小写敏感的.

 

 

注释:单行注释:--

-- no action (comment)

多行注释:--[[    --]]

--[[

print(10)  

--]]

 

全局变量

定义:全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil.

删除全局变量,赋值为nil就可以了,如 m = nil

 

命令行方式 (又是大朵的文字摘抄)

lua [options] [script [args]]

-e:直接将命令传入Lua

lua -e "print(math.sin(12))"   --> -0.53657291800043

-l:加载一个文件.

-i:进入交互模式.

_PROMPT内置变量作为交互模式的提示符

lua -i -e "_PROMPT=' lua> '"

Lua的运行过程,在运行参数之前,Lua会查找环境变量LUA_INIT的值,如果变量存在并且值为@filename,Lua将加载指定文件。如果变量存在但不是以@开头,Lua假定filename为Lua代码文件并且运行他。利用这个特性,我们可以通过配置,灵活的设置交互模式的环境。可以加载包,修改提示符和路径,定义自己的函数,修改或者重命名函数等。

全局变量arg存放Lua的命令行参数。

lua script a b c

在运行以前,Lua使用所有参数构造arg表。脚本名索引为0,脚本的参数从1开始增加。脚本前面的参数从-1开始减少。

lua -e "sin=math.sin" script a b

arg表如下:

arg[-3] = "lua"

arg[-2] = "-e"

arg[-1] = "sin=math.sin"

arg[0] = "script"

arg[1] = "a"

arg[2] = "b"

 

关于分号

Lua在每个语句结尾的分号(;)是可选的,同一行中有多个语句的话最好使用分号(;)隔开(这里说的是最好而不是必须,因为即使没有分号lua也会正确执行而不会报错,但是为了更好的阅读建议加上分号)。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号