北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4701|回复: 5

发一个我现在正在看的mush lua中文教程第一章

[复制链接]
发表于 2009-11-4 14:21:04 | 显示全部楼层 |阅读模式
注明这个是转载不是我原创 作者不知道是谁 我也是刚开始学习 只知道讲的不错 简单明了 看了2个多小时 就已经可以自己编出简单的机器人了,可能这些对于mush高手来讲台肤浅了,但是对于新手来讲还是不错的,希望跟大家一起分享,由于是pdf文档我不知道该怎么转换成txt或者word格式 只好手打了  我觉得这个教程还不错 只要我们用心看了 成为mush高手只是时间问题 就不要在去羡慕别人的机器人 人家也是付出了无数的日夜 才会有今天的成绩  我尽量把教程里面的颜色注明重点加进来,可能我打字也有错的地方 请大家提出

第一章:起点

写一个最简单的程序-----Hello Worldb
  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.1 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") 在你键入回车之后立即被执行,键入文件结束符可以退出交互模式 (Ctrl-D in Unix, Ctrl-Z in ODS/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。(注意:-1选项会调用requirc,将会在指定的目录下搜索文件,如果环境变量没有设好,上面的命令可能不能正确运行。我们将在8.1 节详细更详细的讨论the requirc function)

         -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的含义是依赖与本地环境的。

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


             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

            -1:加载一个文件.
             -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"

[ 本帖最后由 grla 于 2009-11-4 03:16 PM 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 15:03:22 | 显示全部楼层
赞!
或者直接发pdf为附件也可以的吧
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 15:10:16 | 显示全部楼层
话说这个北侠有,word的,图片、代码框齐全的电脑板lua中文教程,就是这个东西
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 15:11:39 | 显示全部楼层
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-11-4 15:12:01 | 显示全部楼层
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-11-4 15:14:34 | 显示全部楼层
原来有了 han 你不发网站都没找到 这个是我在找了N久才找到的
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-2 03:42 AM , Processed in 0.011452 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表