MetaTable和MetaMethod是Lua中的重要的语法,MetaTable主要是用来做一些类似于C++重载操作符式的功能. 两个分数 fraction_a = {numerator=, denominator=} fraction_b = {numerator=, denominator=} 我们想实现分数间的相加:2/3 + 4/7,我们如果要执行: fraction_a + fraction_b,会报错的. 所以,我们可以动用MetaTable,如下所示: fraction_op={…
-Lua的Hello World print("Hello World") 分号可选 -类似python,进入Lua后再shell中打命令执行语句也可 > print("Hello, World") Hello, World > -将脚本存成文件,用如下命令行运行 >lua file.lua -或者是像shell一样运行 chenhao-air:lua chenhao$ cat hello.lua #!/usr/local/bin/lua prin…
__index(a, b) 对应表达式 a.b 上面我们看到有__index这个重载,这个东西主要是重载了find key的操作.这波操作可以让Lua变得有点面向对象的感觉,让其有点像Javascript的prototype. 所谓__index,说得明确一点,如果我们有两个对象a和b,我们想让b作为a的prototype只需要 setmetatable(a, {__index = b}) 例如下面的示例:你可以用一个Window_Prototype的模板加上__index的MetaMethod…
我们可以直接使用require(“model_name”)来载入别的lua文件,文件的后缀是.lua.载入的时候就直接执行那个文件了.比如: 我们有一个hello.lua的文件: print("Hello, World!") 注意:1)require函数,载入同样的lua文件时,只有第一次的时候会去执行,后面的相同的都不执行了.2)如果你要让每一次文件都会执行的话,你可以使用dofile(“hello”)函数3)如果你要玩载入后不执行,等你需要的时候执行时,你可以使用 loadfile…
Lua中的Table其实就是一个Key Value的structure haoel = {name=, handsome=True} -table的CRUD操作 haoel.website="https://coolshell.cn/" local age = haoel.age haoel.handsome = false haoel.name=nil 看上去像c++的struct,但是其实name, age, handsome, website都是key 还可以这样定义Table…
-Lua中没有++或者--的骚操作 -while loop sum = num = do sum = sum + num num = num + end print("sum =",sum) -if else and sex =="Male" then print("男人四十一枝花") and sex ~="Female" then print("old man without country!") the…
-注释 -- 两个减号是行注释 -块注释 --[[ 这是块注释 这是块注释 --]] -变量 Lua的数字只有double型,64bits, Lua的字符串string支持双引号或者单引号 以下例子会输出完全相同的四组结果 a = 'alo\n123"' a = "alo\n123\"" a = '\97lo\10\04923"' a = [[alo 123"]] -null c语言中的null在Lua中为nil -bool bool类型只有ni…
-recurrsive function fib(n) end ) + fib(n - ) end -closure 示例一 function newCounter() return function() -- anonymous function i = i + return i end end c1 = newCounter() print(c1()) --> 1 print(c1()) --> 2 示例二 function myPower(x) return function(y) re…
Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加.假设a和b都是table,通过元表可以定义如何计算表达式a+b.当Lua试图将两个table相加时,它会先检查两者之一是否有元表,然后检查该元表中是否存在__add字段,如果有,就调用该字段对应的值.这个值就是所谓的“元方法”,这个函数用于计算table的和.    Lua中每个值都有一个元表.table和userdata可以有各自独立的元表,而其它数据类型的值则共享其类型所属的单一元表.缺省情况…
这几天研究了一下lua,主要关注的是lua和vc之间的整合,把代码都写好放在VC宿主程序里,然后在lua里调用宿主程序的这些代码(或者叫接口.组件,随便你怎么叫),希望能用脚本来控制主程序的行为.这实际上也是一种把业务分离,用脚本控制的架构,可能有些人把这种脚本叫做业务引擎,工作流等. 为什么选择lua? 因为它是一个能和C/C++结合得很紧的脚本语言,而我们的程序是用VC++ 写的:另外一点是因为它的名气,连WOW都用lua来提供API让玩家修改其游戏行为,那我是找不到什么理由拒绝它了. Lu…