我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ notion /'nəuən/ n. 概念,意念,想法,见解 ]


Lua脚本入gate

Lua脚本入gate
2007-07-02 14:40 来源:  网友评论 0 条 浏览次数 128
使用流程
1. 函数的使用
以下程序演示了如何在Lua中使用函数, 及局部变量
例e02.lua
-- functions
function pythagorean(a, b) 
local c2 = a^2 + b^2 
return sqrt(c2)
end
print(pythagorean(3,4))

运行结果
5

程序说明
在Lua中函数的定义格式为:
function 函数名(参数)
...
end
与Pascal语言不同, end不需要与begin配对, 只需要在函数结束后打个end就可以了.
本例函数的作用是已知直角三角形直角边, 求斜边长度. 参数a,b分别表示直角边长,
在函数内定义了local形变量用于存储斜边的平方. 与C语言相同, 定义在函数内的代
码不会被直接执行, 只有主程序调用时才会被执行.
local表示定义一个局部变量, 如果不加local刚表示c2为一个全局变量, local的作用域
是在最里层的end和其配对的关键字之间, 如if ... end, while ... end等。全局变量的
作用域是整个程序。

2. 循环语句
例e03.lua
-- Loops
for i=1,5 do 
print("i is now " .. i)
end

运行结果
i is now 1
i is now 2
i is now 3
i is now 4
i is now 5

程序说明
这里偶们用到了for语句
for 变量 = 参数1, 参数2, 参数3 do
循环体
end
变量将以参数3为步长, 由参数1变化到参数2
例如: 
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end

这里print("i is now " .. i)中,偶们用到了..,这是用来连接两个字符串的,
偶在(1)的试试看中提到的,不知道你们答对了没有。
虽然这里i是一个整型量,Lua在处理的时候会自动转成字符串型,不需偶们费心。

3. 条件分支语句
例e04.lua
-- Loops and conditionals
for i=1,5 do
print(“i is now “ .. i)
      if i < 2 then     
      print(“small”) 
      elseif i < 4 then     
      print(“medium”) 
      else     
      print(“big”) 
      end
end

运行结果
i is now 1
small
i is now 2
medium
i is now 3
medium
i is now 4
big
i is now 5
big

程序说明
if else用法比较简单, 类似于C语言, 不过此处需要注意的是整个if只需要一个end,
哪怕用了多个elseif, 也是一个end.
例如
    if op == "+" then
      r = a + b
    elseif op == "-" then
      r = a - b
    elseif op == "*" then
      r = a*b
    elseif op == "/" then
      r = a/b
    else
      error("invalid operation")
    end


4.试试看
Lua中除了for循环以外, 还支持多种循环, 请用while...do和repeat...until改写本文中的for程序 <script type=text/javascript> bbscode('postcontent1');

数组的使用

1.简介
Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组啦,
类啦, 都可以由table实现.

2.table的下标
例e05.lua
-- Arrays
myData = {}
myData[0] = “foo”
myData[1] = 42

-- Hash tables
myData[“bar”] = “baz”

-- Iterate through the
-- structure
for key, value in myData do 
print(key .. “=“ .. value)
end

输出结果
0=foo
1=42
bar=baz

程序说明
首先定义了一个table myData={}, 然后用数字作为下标赋了两个值给它. 这种
定义方法类似于C中的数组, 但与数组不同的是, 每个数组元素不需要为相同类型,
就像本例中一个为整型, 一个为字符串.

程序第二部分, 以字符串做为下标, 又向table内增加了一个元素. 这种table非常
像STL里面的map. table下标可以为Lua所支持的任意基本类型, 除了nil值以外.

Lua对Table占用内存的处理是自动的, 如下面这段代码
    a = {}
    a["x"] = 10
    b = a      -- `b' refers to the same table as `a'
    print(b["x"]) --> 10
    b["x"] = 20
    print(a["x"]) --> 20
    a = nil    -- now only `b' still refers to the table
    b = nil    -- now there are no references left to the table
b和a都指向相同的table, 只占用一块内存, 当执行到a = nil时, b仍然指向table,
而当执行到b=nil时, 因为没有指向table的变量了, 所以Lua会自动释放table所占内存

3.Table的嵌套
Table的使用还可以嵌套,如下例
例e06.lua
-- Table ‘constructor’
myPolygon = { 
color=“blue”, 
thickness=2, 
npoints=4; 
{x=0,    y=0}, 
{x=-10, y=0}, 
{x=-5, y=4}, 
{x=0,    y=4}
}

-- Print the color
print(myPolygon[“color”])

-- Print it again using dot
-- notation
print(myPolygon.color)

-- The points are accessible
-- in myPolygon[1] to myPolygon[4]

-- Print the second point’s x
-- coordinate
print(myPolygon[2].x)

本帖最近评分记录:
  • 浮云:10(est) 优秀内容。看来WoW的影响不小啊
  • 顶端 Posted: 2007-07-31 21:26 | [楼 主]
    est





    性别: 帅哥 状态: 该用户目前不在线
    等级: 荣誉会员
    发贴: 6578
    威望: 3
    浮云: 431
    在线等级:
    注册时间: 2006-10-14
    最后登陆: 2018-07-05

    5come5帮你背单词 [ grape /greip/ n. 葡萄 ]


    LZ的帖子不错哦

    谁知道The Elder Scroll4: Oblivion里内嵌的脚本是什么语言呢?

    还有Quake3引擎有没有内嵌脚本语言?
    顶端 Posted: 2007-07-31 23:05 | [1 楼]
    est





    性别: 帅哥 状态: 该用户目前不在线
    等级: 荣誉会员
    发贴: 6578
    威望: 3
    浮云: 431
    在线等级:
    注册时间: 2006-10-14
    最后登陆: 2018-07-05

    5come5帮你背单词 [ drain /drein/ v. 排水,(使)枯竭;n. 下水道,排水,耗费 ]


    Quote:
    引用第7楼lxlcn于2007-07-31 21:46发表的  :
    其实我想说的是python比这个简单...不过Lua还是有不少优势
    python转60~70行简单的.py生成2M多的exe文件,还有很多的dll之类的东西..


    python这个不是编译,而是打包。把python.exe等运行库打包成一个exe。

    能编译成Native Code的貌似只有C/C++和Dephi。其他的都要运行库。
    顶端 Posted: 2007-07-31 23:06 | [2 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.011979(s) query 6, Time now is:11-23 12:03, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号