| 网站首页 | 业界动态 | 游戏教程 | 佳宾留言 | 游戏屋商城 | 供求信息 | 人力资源 | 
您现在的位置: 游戏屋 >> 游戏教程 >> 程序教程 >> 脚本语言 >> 教程正文 用户登录 新用户注册
Programming in Lua翻译--Getting started            【字体:
Programming in Lua翻译--Getting started
作者:佚名    教程来源:网络搜集    点击数:    更新时间:2006-5-20    

Getting started | Preface | Types and Values | Expressions | Statements | Functions


Part I:The Language
推荐使用文本编辑器和命令行解释程序,这样可以让你更好地对语言理解。
1.Getting Started
1.1 Hello world 程序
 print("Hello World")
 假定你把上面这句保存在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")        -- read a number
    print(fact(a))

这个例子定义了一个函数,计算输入参数n的阶乘;本例子要求用户输入一个数字n,然后打印n的阶乘。
1.2 Chunks
 Chunk是一系列于据,Lua执行的每一块语句,比如一个文件或者交互模式下的一行都是一个Chunk.
 每个语句结尾的分号(;)是可选的,但如果同一行有多个语句最好用;分开
  a = 1   b = a*2    -- ugly, but valid
 一个Chunk可以是一个语句,也可以是一系列语句的组合,还可以是函数,Chunk可以很大,在Lua中几个MByte的Chunk是很常见的。
 你还可以以交互模式运行Lua,不带参数运行Lua:
 Lua 5.0  Copyright (C) 1994-2003 Tecgraf, PUC-Rio
    >
你键入的每个命令(比如:"Hello World")在你press Enter后立即被执行,键入文件结束符可以退出交互模式(ctrl-D in Unix, ctrl-Z in DOS/Windows),或者调用OS库的os.exit()函数也可以退出.
 交互模式下,Lua通常把每一个行当作一个chunk,但如果Lua一行不是一个完整的chunk时,他会等待继续输入直到得到一个完整的chunk.在Lua等待续行时,显示不同的提示符(一般是>>).
 可以通过指定参数让Lua执行一系列chunk.例如:假定一个文件a内有单个语句x=1;另一个文件b有语句 print(x)
 prompt> lua -la -lb
命令在一个chunk内先运行a然后运行b.(注意:-l选项会调用require,将会在指定的目录下搜索文件,如果环境变量没有设好,上面的命令可能不能正确运行.)
 -i选项要求Lua运行指定chunk后进入交互模式.
 prompt> lua -i -la -lb
将在一个chunk内先运行a然后运行b,然后进入交互模式.
 另一个连接外部chunk的方式是使用dofile函数,dofile加载文件并执行它.假设有一个文件:
 -- file lib1.lua
   
    function norm (x, y)
      local n2 = x^2 + y^2
      return math.sqrt(n2)
    end
   
    function twice (x)
      return 2*x
    end
在交互模式下:
 > dofile("lib1.lua")   -- load your library
    > n = norm(3.4, 1.0)
    > print(twice(n))      --> 7.0880180586677
-i和dofile在调试或者测试Lua代码时是很方便的.
1.2 全局变量
全局变量不需要声明,给一个变量负值即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil.
 print(b)  --> nil
    b = 10
    print(b)  --> 10
如果你想删除一个全局变量,只需要将变量负值为nil
 b = nil
    print(b)  --> nil
这样变量b就好像从没被使用过一样.换句话说,一个全局变量存在当且仅当这个变量不等于nil.
1.3 词法约定
 标示符:字母(letter)或者下划线开头的字母、下划线、数字序列.最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的.Lua中,letter的含义是依赖于本地环境的.
 保留字:不能当作标示符
 and       break     do        else      elseif
    end       false     for       function  if
    in        local     nil       not       or
    repeat    return    then      true      until
    while
    Lua是大小写敏感的.
    注释:单行注释:--
    多行注释:--[[ --]]
    --[[
    print(10)         -- no action (comment)
    --]]
1.4 命令行方式
    lua [options] [script [args]]
 -e:直接将命令传入Lua
  prompt> lua -e "print(math.sin(12))"   --> -0.53657291800043
 -l:加载一个文件.
 -i:进入交互模式.
 _PROMPT内置变量作为交互模式的提示符
  prompt> lua -i -e "_PROMPT= lua> "
      lua>
Lua的运行过程,在运行参数之前,Lua会查找环境变量LUA_INIT的值,如果变量存在并且值为@filename,Lua加载指定的文件.如果变量存在但不是以@开头,Lua假定filename为Lua代码文件并且运行他.利用这个特性,我们可以通过配置灵活的设置交互模式的环境.可以加载包,修改提示符和路径,定义自己的函数,修改或者重名名函数等.
 全局变量arg存放Lua的命令行参数.
 prompt> lua script a b c
在运行以前,Lua使用所有参数构造arg表.脚本名索引为0,脚本的参数从1开始增加.脚本前面的参数从-1开始减少.
 prompt> 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"


教程录入:网友提供    责任编辑:游戏屋 
  • 上一篇教程:

  • 下一篇教程:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关教程
  • 使用Proguard混淆J2ME应用程
  • Programming in Lua翻译--Pr
  • Programming in Lua翻译--Ty
  • Programming in Lua翻译--Ex
  • Programming in Lua翻译--St
  • Programming in Lua翻译--Fu
  • Programming in Lua翻译--Mo
  • Programming in Lua翻译--7.
  • Programming in Lua翻译--8.
  • Programming in Lua翻译--9.
  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)