——For Aegisub——
-- this is one line comment --[[ this is a comment and comment again and again ]]
var_string = "foo and bar"; --用"" 表示 string print(var_string); → foo and bar 当遇到限定符号,例如 “"”,则打反斜杠(类似正则表达) var_string = "foo and \" \\ bar"; print(var_string); → foo and " \ bar
var_string = string.upper('foo'); print(var_string); → FOO
'foo'.."and"..[[bar]] → foo and bar
在 Aegisub 中用 table
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,test_var = {"one", 2,3,4,5} Comment: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,template syl,!test_var[1]! Comment: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,karaoke, ↓ Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,fx,one --- Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,test_var = {foo="two", 2,3,4,5} Comment: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,template syl,!test_var.foo! Comment: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,karaoke, ↓ Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,fx,two
—————————————–
print("aa"); → aa
两个横杠 --print("aa"); 可以按 control + / 来快速切换
num = 100 print(num) → 100
local num = 100
function sayhello() print("hello lua functions") end sayhello() → hello lua functions
function max(a,b) if a>b then print(a) else print(b) end end max(2,7) → 7 也可以用 return 方法 function max(a,b) if a>b then return(a) else return(b) end end print(max(2,1)) → 2
for var=init, end(, step) do ** end E.g: for i = 3, 1, -1 do print(i) end → 3 2 1
config = {} --创建空的表 config.words = "hello" --元素 config.num = "100" config["name"]="zhang san" --键 print(config["words"]) --键 print(config.name) --元素 → hello zhang san 也可以在大括号内直接定义: config={alpha="AA",beta="BB"} print(config.alpha) print(config["beta"]) → AA BB
for key, var in pairs(table) do --table 为表的名字 ** end 例如: config={alpha="AA",beta="BB"} for key, var in pairs(config) do print(key,var) end → alpha AA beta BB
lua 没有数组的概念,通常用表来完成 arr = {1,2,3,"hellp"} --定义初始值 for key, var in pairs(arr) do --循环打印数组 print(key,var) end → 1 1 2 2 3 3 4 hellp 可以理解为:左边为数组索引,右边为数组的内容 另,lua 的索引是从 1 开始的,而非 0.
arr = {1,2,3} --定义初始值 table.insert(arr,2,"foo")---在 arr 数组的第 2 个位置插入了 “foo” for key, var in pairs(arr) do --循环打印数组 print(key,var) end → 1 1 2 foo 3 2 4 3 生成一个倒序数列: arr = {} --定义初始值 for var=1, 5 do --每次循环都在第一个位置插入数值 table.insert(arr,1,var) end for key, var in pairs(arr) do --循环打印数组 print(key,var) end → 1 5 2 4 3 3 4 2 5 1
function clone(tab) --拷贝一个表,tab 为输入量 local ins = {} --定义了一个局部表 ins for key, var in pairs(tab) do --将输入的 tab 表的值复制到对应 ins 表的值 ins[key]=var end return ins --返回值为 ins 表 end people ={} --新建一个类 people people.sayHi= function() --people 类的方法 sayHi print("what a nice day") end -- function people.sayHi() --另一种设置类方法的方式 -- print("what a nice day") -- end local p = clone(people) --用 clone 方法,把 people 表复制到了 p 表 p.sayHi() --用一个实例执行了 sayHi → what a nice day 如果不用实例的思想,则可以简单写为: people ={} --新建一个类 people people.sayHi= function() --people 类的方法 sayHi print("what a nice day") end people.sayHi() → what a nice day
function clone(tab) --拷贝一个表,tab 为输入量 local ins = {} --定义了一个局部表 ins for key, var in pairs(tab) do --将输入的 tab 表的值复制到对应 ins 表的值 ins[key]=var end return ins --返回值为 ins 表 end function copy(dist,tab) for key, var in pairs(tab)do dist[key]=var end end people ={} --新建一个类 people people.sayHi= function(self) --people 类的方法 sayHi print("People say hi:"..self.name) end -- function people.sayHi() --另一种设置类方法的方式 -- print("what a nice day") -- end people.new=function(name) local self = clone(people) self.name = name return self end -- local p = clone(people) --用 clone 方法,把 people 表复制到了 p 表 -- p.sayHi() local p = people.new("Zhangsan") p.sayHi(p) -- p:sayHi() 是一种更简单的写法 man ={} man.new = function(name) local self=people.new(name) copy(self,man) return self end man.sayHello = function () print("man say hello") end local m=man.new("Lisi") m:sayHi() --m:sayHello